javascript - 无法解决 forEach 中的 Promise

标签 javascript async-await promise

这是我调用函数的代码

masterCredsResponse.data.forEach((masterCred) => {
  // Check Login status
  masterCredsArray.push({
    master: masterCred.parent,
    loginCheck: Promise.resolve(getSessionID()())
  })
})

我在这里得到了

loginCheck: Promise { <pending> }

我看到很多关于这个主题的问题,但无法理解如何完成它。 当我不使用循环而是单独调用它时它就可以工作 喜欢

let loginCheckReponse =  await getSessionID()()

但是我在循环中使用这个方法不起作用

loginCheck: await getSessionID()() // Doesn't work

最佳答案

@Samathingamajig 关于 Promise.resolve 的说法是正确的。此外,如果不使回调异步,则无法在 forEach 内部运行 await

最基本的修复方法是向回调添加一个async,向promise添加一个await。但是,您将无法符合人体工程学地等待阵列完成处理。

masterCredsResponse.data.forEach(async (masterCred) => {
  masterCredsArray.push({
    master: masterCred.parent,
    loginCheck: Promise.resolve(getSessionID())
  })
})

您可以使用mapPromise.all来确保正确阻止执行。请注意,它们将同时发生:

const masterCredPromises = masterCredsResponse.data.map(
  async (masterCred) => ({
    master: masterCred.parent, 
    loginCheck: await getSessionId()
  })
);
const masterCredsArray = await Promise.all(masterCredPromises);

希望有帮助!

关于javascript - 无法解决 forEach 中的 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74569136/

相关文章:

javascript - Promise 扩展到更多的 Promise 会导致不可预测的数据格式(以及不可读的代码)

javascript - promise 在 $http promise 结束之前返回

javascript - 如何从 json 文件中选择并打印值

javascript - javascript 中的奇怪示例,为什么我无法通过函数的参数重新分配全局变量的值?

javascript - 分析 sammy.js 中的查询字符串?

javascript - 带有 async wait es6 函数的变量未定义

javascript - 我怎样才能获得 promise 的值(value)?

javascript - 隐藏 HTML 元素的性能更好的方法是什么?

javascript - 如何将我的方法重写为 async/await?

javascript - 在 React 组件中使用 Async await 时会出现语法错误