[英]For loop value in Promise.then() inside
我對 node.js 中的 for 循環內的 promise.then() 有疑問。
對於這樣的代碼:
const arrayObject = [
{
id: 1234,
toto: 'abc'
},
{
id: 5678,
toto: 'def'
},
{
id: 910,
toto: 'ghi'
},
]
const finalArray = []
let promiseArray = []
for (let singleObject of arrayObject) {
promiseArray.push(
Promise.function(...).then(res => {
if (res === true) {
finalArray.push(singleObject)
}
})
)
}
await Promise.all(promiseArray)
如果promise之前的singleObject是'id: 1234',那么promise中的singleObject是否相同?
我知道通過測試我已經完成了但我找不到任何文檔/示例說明 promise.then 中的 singleObject 將與 promise 之前的 singleObject 相同。
promise.then中的singleObject是否總是和promise之前的singleObject在同一個scope中?
是的,兩個變量都包含對相同 object 的引用。它與Promise.then
。 就是箭頭function的閉合
res => { if (res === true) { finalArray.push(singleObject) } }
閉包是將 function 捆綁在一起(封閉)並引用其周圍的 state(詞法環境)的組合。 換句話說,閉包使您可以從內部 function 訪問外部函數的 scope。在 JavaScript 中,每次創建 function 時都會創建閉包,創建時間為 function。
甚至全局 scope 也是閉包 scope 鏈的一部分:
每個閉包都有三個作用域:
- 本地 Scope(自己的范圍)
- 外部函數 Scope
- 全球 Scope
不是 100% 確定,但我會說singleObject
在前后確實是一樣的。 我相信它可能是對原始 object 的引用? 檢查的方法是修改arrayObject
中的一個對象,然后打印arrayObject
和finalArray
,檢查您修改的 object 是否在兩者中都被修改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.