【发布时间】:2014-09-02 12:59:49
【问题描述】:
我虽然这段代码可以工作:
var promise = function(val) {
var _val = val;
return setTimeout(function(_val) {
var newVal = val / 10;
return {
newVal : newVal,
message : 'it just to be a ' + val
};
}, 3000);
};
Q.when(promise(400)).then(function(obj) {
return console.log('jaaaaj !', obj);
}, function() {
return console.log('no yet...');
});
我的想法是:当 setTimeout 在四秒后完成它的工作时,Q 库将在第一个回调中捕获返回并显示具有两个属性的对象:newVal : 4 和 message : 'it just to be a ' + 400。相反,我在成功回调中有奇怪的 1 数字作为 obj...
顺便说一句,Q 库中的 .when 和 .then 有什么区别?
【问题讨论】:
-
您实际上无法从
setTimeout返回任何内容,因为它是异步的。此外,从上下文(以及接受的参数)中应该清楚when包装了一个承诺,以便它可以与then链接,then在 当 承诺解决时触发回调。
标签: javascript promise q