如何等待承诺得到解决并在之后执行其他代码行
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(
.
我是 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(
.