【发布时间】:2014-07-24 19:13:50
【问题描述】:
我正在尝试在 Ember 中创建一棵承诺树。
return this.store.find('session', 'session').then(function(session) {
if (session.get('isEmpty')) {
return this.store.createRecord('session').save().then(function(session) {
session.set('id', 'session');
return session.save();
}.bind(this));
} else {
return session;
}
}.bind(this), function(session) {
return this.store.createRecord('session').save().then(function(session) {
session.set('id', 'session');
return session.save();
}.bind(this));
}.bind(this)).then(function(session) {
this.controllerFor('application').onLanguageChange();
this.set('localStorage.session', session);
return session;
}.bind(this));
我想执行如下所示的承诺。提到还有嵌套的 promise createRecord(..).save().then。有可能这样做吗?
这里不完全是一棵承诺树,因为最后一个应该为两个分支执行。如果我把它们放在一个自己的函数中,当然可以。像这样:
'successBranch'.then(function(session) {
setSessionDependents(session);
return session;
}
'failBranch'.then(function(session) {
setSessionDependents(session);
return session;
}
function setSessionDependents(session) {
this.controllerFor('application').onLanguageChange();
this.set('localStorage.session', session);
}
【问题讨论】:
-
是的,当然可以。不行吗?
-
我的生命是一棵承诺树...
标签: javascript ember.js promise