gpt4 book ai didi

javascript - for 循环中包含 promise 的词法作用域?

转载 作者:行者123 更新时间:2023-11-28 15:40:17 25 4
gpt4 key购买 nike

我有一个 ids 对象,它将 id 字符串映射到 product 对象。

for id of ids
product = ids[id]
console.log product # Prints out something different each loop. :)
Product.create(product).then ->
console.log product # Only prints out the last id each loop. :(

我正在使用一个库进行数据库交互,它公开了 promise (由上面的 then 函数表示)。我正在尝试打印 then 函数内的 product 变量,但我似乎只获取 中的最后一个 id ids,所以看起来这是一个范围问题。如何正确确定 product 变量的范围,以便它在每个循环的 then 函数中打印出不同的产品?

最佳答案

@false 确实找到了 right duplicate describing your issue 。事实上,您遇到了一个范围问题,其中 product 对于循环体来说是非本地的,并且您只能从异步回调中获取最后一项。

How can I scope the product variable properly so that it prints out a different product in the then callback?

在惯用的 CoffeeScript 中,您将使用 do notation对于循环中的 IEFE:

for id of ids
do (product = ids[id]) ->
console.log product
Product.create(product).then ->
console.log product

或者,直接从 of 循环中提取属性值:

for id, product of ids
do (product) ->

关于javascript - for 循环中包含 promise 的词法作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24028538/

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