【发布时间】:2015-12-21 04:24:57
【问题描述】:
我正在使用q 在我的项目中实现承诺,我想做这样的事情:
- 检查是否
a >= 10,如果是,则返回; - 如果没有,请再次调用自身。
我的代码是错误的,但它可以帮助你理解我:
var Q = require("q");
function delay(ms) {
var deferred = Q.defer();
setTimeout(deferred.resolve, ms);
return deferred.promise;
}
function wait(a) {
var deferred = Q.defer();
if (a >= 10) {
deferred.resolve(a);
} else {
console.log("wait " + a);
delay(10).then(wait(a + 1)).then(deferred.resolve(a));
}
return deferred.promise;
}
wait(1).then(console.log); // what I want is 10 instead of 1
【问题讨论】:
-
您希望在代码末尾的最后一个 console.log 中显示什么值?现在,它是空的。
-
@Mike 我想要的是 10 而不是 1
标签: node.js promise settimeout