如何等待承诺得到解决并在之后执行其他代码行

How to wait for promise to get resolve and execute other lines of code after

我是 js 新手 async/await。我正在使用 $.each 实用程序,我发现即使在使用 await 之后,代码行也会以异步方式执行,因此,我从 $.each -> for,对我有用

你有 await 嵌套在一些 $.each(ticketIds, async function 循环中,但是意识到这些 async 函数 return 当它们遇到await,return 承诺:循环将因此产生一组承诺并继续而不等待 那些 承诺。

最简单的解决方案之一是使用 for 循环,以便所有 await 表达式 运行 在外部 async 函数的上下文中。

例如,改变这个:

$.each(rowGroups, function(serviceName, obj) {
    // ...
});

对此:

for (let [serviceName, obj] of Object.entries(rowGroups)) {
    // ...
}

...并对所有这些嵌套循环执行此操作。

我认为有一个例子,迭代不是针对 plain 对象,而是针对 array,那么从此改变:

$.each(issueLinks, function(index, issue) {

对此:

for (let [index, issue] of issueLinks.entries()) {

这解决了你的问题。但正如评论中所述,您还有另一个问题:createJiraResponse 将保持未定义状态,因为您的 client 函数没有 return 承诺。因此,要么从该箭头函数中删除大括号,要么将 fetch( 更改为 return fetch(.