gpt4 book ai didi

javascript - nodejs - 将全局变量传递给解析中的 promise 回调

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:14 25 4
gpt4 key购买 nike

考虑这段代码

for (var i = 0; i < data.length; i++){
query.equalTo("objectId",data[i].id).first().then(
function(object){
object.set("username", data[i].username);
object.save();
}
);
}

在此示例中,then 回调 内的 data[i] 是数组的最后一个元素

考虑通常在 javascript 世界中工作的第二个示例

假设我们使用一些连接到 mongodb 并具有名为 update 的函数的 API

for (var i = 0; i < data.length; i++){
query.eq("_id",data[i].id).update(data[i].username);
}

eq 返回对象,update 更新该对象并保存它。

如果这样的事情是可能的,那不是很棒吗......(不确定它是否也能工作)

for (var i = 0; i < data.length; i++){
query.equalTo("objectId",data[i].id).first().then(
function(object, data[i]){
object.set("username", data.username);
object.save();
}
);
}

最佳答案

这实际上不起作用,只是因为 var 的作用域。您可以通过以下方式让示例按需要运行:

a) 使用 let 代替 var

b) 为 i 创建一个新的作用域(这就是 let 的基本作用)。 (在匿名 fn 中,为了清楚起见,我使用了 ii 而不是 ii 也可以工作):

for (var i = 0; i < data.length; i++){
(function(ii) {
query.equalTo("objectId",data[ii].id).first().then(
function(object){
object.set("username", data[ii].username);
object.save();
}
);
})(i)
}

关于javascript - nodejs - 将全局变量传递给解析中的 promise 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37483190/

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