gpt4 book ai didi

javascript - 在 Q promises 中,为什么会立即调用 fall?

转载 作者:行者123 更新时间:2023-11-30 12:26:44 25 4
gpt4 key购买 nike

有这个代码

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 被调用后被调用?

最佳答案

您误解了(典型的 Javascript) promise 的工作方式。他们不会等到你对他们调用 .then 。他们做他们的工作,当它完成时,他们调用传递给 .then 的任何函数。

因此对于您的问题“如何让函数仅在 then 被调用之后被调用?”,您不能,至少不能按照您尝试的方式进行。这不是 promise 的工作方式。

但你当然可以这样做:

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);

关于javascript - 在 Q promises 中,为什么会立即调用 fall?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29098289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com