【发布时间】:2026-01-07 17:05:01
【问题描述】:
我正在使用路由的加载子状态向用户显示一些网络流量正在发生。如此处所述:https://guides.emberjs.com/v2.4.0/routing/loading-and-error-substates/
除了在模型钩子中加载模型外,我还在路由初始化阶段保存更改。我在 aftermodel 钩子中这样做。 像这样的:
afterModel () {
var session = this.get('session');
return session.SaveAnyUnsavedObjects();
},
//session.js
SaveAnyUnsavedObjects: function() {
var promises = [];
...
activities.forEach(function(activity) {
if(activity.get('hasDirtyAttributes')) {
promises.pushObject(activity.save());
}
}
if(promises.get('length') > 0)
{
// Use RSVP.Promise.allSettled() to resolve an array of promises.
return Ember.RSVP.allSettled(promises);
}
}
这在大多数情况下都很有效。当我的部分或全部承诺失败时,问题就出现了,可能是由于离线。所以我想在我的 Promise 中添加一个“then”-handler,以便在 Promise 完成后执行一些代码。如何在添加 then-handler 的同时保持加载子状态?
换句话说,我怎样才能在 ajax 调用开始后立即向模型钩子或后模型钩子返回一个承诺,同时拥有处理承诺结果的代码?
【问题讨论】: