【发布时间】:2022-01-20 04:35:19
【问题描述】:
我在从我在 for 循环中调用的异步函数返回结果时遇到了一点麻烦,我应该返回一个字符串,但它返回的是一个承诺 我正在遵循这种语法,但我无法让它正常工作,我希望能深入了解为什么会失败https://eslint.org/docs/rules/no-await-in-loop
这是我正在尝试使用的函数,在这种情况下 decodeTheObject 是异步的并返回一个承诺,但如果我使用 await decodeTheObject eslint 会给我一个错误,说我不能在 for 循环中使用 await,不幸的是上面的解决方法仍然会导致返回一个承诺而不是一个已解决的值
async function decode (request, encodedObj) {
const decodedArr = [];
try{
for (const id of encodedObj) {
decodedArr.push({
data: decodeTheObject(request, id), // this is an async function
partial: true,
});
}
await Promise.all(decodedArr);
return decodedArr;
}catch (err) {
throwError(
req,
{
errorDetails: [
{
issue: 'INVALID_ENCODING',
description: 'Invalid encoded obj',
},
],
},
);
}
};
// ----- calling function -----
const decodedObj = await decode(request, encodedItem);
const payload = {
newprop: decodedObj
};
【问题讨论】:
标签: node.js async-await