我有一个函数foo调用另一个函数moreFoo并且我想将函数调用包装在 Promise 中,以便foo返回的 Promise 在moreFoo解决后返回。这是我的解决方案:
function foo() {
var defer = $q.defer();
console.log('doing foo');
moreFoo().then(defer.resolve);
return defer.promise;
}
function moreFoo() {
var defer = $q.defer();
setTimeout(function() {
console.log('doing more foo');
defer.resolve();
}, 2000);
return defer.promise;
}
foo().then(function() {
console.log('finished with all foos');
});
然后输出:
doing foo doing more foo finished with all foos
它似乎按预期工作。这是链接这些承诺的正确/最佳方式吗?