【发布时间】:2014-11-16 12:20:57
【问题描述】:
假设你有:
function setTimeoutPromise(ms) {
var defer = Q.defer();
setTimeout(defer.resolve, ms);
return defer.promise;
}
然后你有类似的东西:
function foo(ms) {
return setTimeoutPromise(ms).then(function () {
console.log('foo');
});
}
function afterItAll() {
console.log('after it all');
}
foo(100).then(function () {
console.log('after foo');
}).then(afterItAll);
有没有办法修改 foo 以便 afterItAll 在 after foo 块之后执行?例如类似:
function foo(ms) {
return setTimeoutPromise(ms).then(function () {
console.log('foo');
}).SOMEPROMISECONSTRUCT(function () {
console.log('after it all');
});
}
foo(100).then(function () {
console.log('after foo');
});
我问的原因是我正在开发一个 API,用户将在其中进行几次这样的 foo 调用,如果 after foo em> 代码在这些 API 调用后自动执行。我知道我可以使用回调来完成此操作,但我真的很想坚持使用 Promise。
【问题讨论】:
-
你的用例到底是什么?
标签: javascript promise q chaining