gpt4 book ai didi

javascript - 使用 Q (promise) 的 Node.js 上的变量上下文问题

转载 作者:行者123 更新时间:2023-12-03 10:15:23 25 4
gpt4 key购买 nike

我使用带有 Q 的 Node.js 作为 Promise 实现。

出于某种原因,我必须用循环构建一些 promise 。当然,在“真实”代码中,我不在“for”循环中使用常量。

我在提供 i 时遇到问题作为我的函数的参数 buildPromiseForIdx 。我希望传递 i 的值并期望控制台中出现以下结果。

-3
*3

但是代码显示:

-3
*2

这是代码:

function loop(promise, fn) {
return promise.then(fn).then(function (result) {
return !result ? loop(Q(result), fn) : result;
});
}

function buildPromiseForIdx(i) {
return getIdx(i*10).then(parseIdx);
}

// building promises for all idx page
var promises= [];
for (var i = 3 ; i >= 3 ; i--) {
log.debug('-'+i);
promises.push(loop(Q(false), function () { log.debug('*'+i);return buildPromiseForIdx(i)}));
}

最佳答案

以下问题的答案在这种情况下也有效。

How do I pass the value (not the reference) of a JS variable to a function?

我的循环现在是:

var promises= [];
for (var i = 3 ; i >= 3 ; i--) {
log.debug('-'+i);
(function (i) {
promises.push(loop(Q(false), function () { log.debug('*'+i);return buildPromiseForIdx(i)}));
})(i);
}

关于javascript - 使用 Q (promise) 的 Node.js 上的变量上下文问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29896315/

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