如何将元素推出 forEach() 上下文?
How can I push elements out of a forEach() context?
这是我第一次 post :)
所以我想做的是使用 forEach() 循环遍历对象的键,并为每个元素将特定值推送到数组中。然后在循环之后,解析包含所有推送值的数组。
据我了解,很难找出 forEach() 上下文的值。有没有办法做这样的事情?
这是我正在尝试做的代码示例:
some function returning a promise
...
...
let promisesArray = [];
//Loop on each object from data and do whatever
ObjectJSON.array.forEach((object) => {
if (object.key === "foo") {
functionBar()
.then((response) => {
promisesArray.push(
`Object: ${object.key} | ${object.someOtherKey}`
);
})
.catch((error) => {
reject(error);
});
}
});
resolve(promisesArray);
}); //end of promise's return
现在,它 returns 一个空数组。
预期的结果应该是这样的:
[
'Object: key1 | someOtherKey1',
'Object: key2 | someOtherKey2',
'Object: key3 | someOtherKey3',
...
]
非常感谢您的回答!
恭喜您获得第一个 post!
虽然是一个超级经典的问题,如何在循环中使用异步函数。使用 .forEach
你不能,但你可以在 for
循环中使用 await
:
let promisesArray = [];
for (let object of ObjectJSON.array) {
if (object.key !== "foo") continue;
const response = await functionBar();
promisesArray.push(
`Object: ${object.key} | ${object.someOtherKey}`
);
}
resolve(promisesArray);
使用 await
可能需要将您的函数标记为 async
(async function doSomething() { ...
)
这是我第一次 post :)
所以我想做的是使用 forEach() 循环遍历对象的键,并为每个元素将特定值推送到数组中。然后在循环之后,解析包含所有推送值的数组。
据我了解,很难找出 forEach() 上下文的值。有没有办法做这样的事情?
这是我正在尝试做的代码示例:
some function returning a promise
...
...
let promisesArray = [];
//Loop on each object from data and do whatever
ObjectJSON.array.forEach((object) => {
if (object.key === "foo") {
functionBar()
.then((response) => {
promisesArray.push(
`Object: ${object.key} | ${object.someOtherKey}`
);
})
.catch((error) => {
reject(error);
});
}
});
resolve(promisesArray);
}); //end of promise's return
现在,它 returns 一个空数组。
预期的结果应该是这样的:
[
'Object: key1 | someOtherKey1',
'Object: key2 | someOtherKey2',
'Object: key3 | someOtherKey3',
...
]
非常感谢您的回答!
恭喜您获得第一个 post!
虽然是一个超级经典的问题,如何在循环中使用异步函数。使用 .forEach
你不能,但你可以在 for
循环中使用 await
:
let promisesArray = [];
for (let object of ObjectJSON.array) {
if (object.key !== "foo") continue;
const response = await functionBar();
promisesArray.push(
`Object: ${object.key} | ${object.someOtherKey}`
);
}
resolve(promisesArray);
使用 await
可能需要将您的函数标记为 async
(async function doSomething() { ...
)