拥有此代码
var Q = require('q');
var first = Q.fcall(function() {
console.log('This will be output before actual resolution?');
return "This is the result.";
});
setTimeout(function() {
console.log('Gonna resolve.');
first.then(function(r) {
console.log(r);
});
}, 3000);
为什么结果是
This will be output before actual resolution?
Gonna resolve.
This is the result.
而不是
Gonna resolve.
This will be output before actual resolution?
This is the result.
如何在调用then
之后调用函数?
答案 0 :(得分:3)
你误解了(典型的Javascript)承诺如何运作。在你打电话给.then
之前,他们不会等待。他们完成工作,完成后,他们调用传递给.then
的任何函数。
所以对于你的问题“我怎么才能在调用之后才调用函数?”,你不能,至少不是你想要的方式。这不是承诺的工作方式。
但你当然可以这样做:
var Q = require('q');
var getFirst = function () {
return Q.fcall(function() {
console.log('This will be output before actual resolution?');
return "This is the result.";
});
};
setTimeout(function() {
console.log('Gonna resolve.');
getFirst().then(function(r) {
console.log(r);
});
}, 3000);