相关文章推荐
好帅的签字笔  ·  连续调用window.open() ...·  11 月前    · 
直爽的槟榔  ·  Context Caching :: ...·  1 年前    · 
瘦瘦的野马  ·  java.io.ioexception ...·  2 年前    · 
想出家的长颈鹿  ·  js禁用按钮及解除禁用_风起云涌2021的博 ...·  2 年前    · 
知识渊博的斑马  ·  Linux(08):网络配置文件——其它_I ...·  2 年前    · 
Code  ›  我可以使用TypeScript在同步函数中等待异步操作循环完成吗?开发者社区
typescript
https://cloud.tencent.com/developer/ask/sof/185228
英勇无比的筷子
11 月前
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
提问

问 我可以使用TypeScript在同步函数中等待异步操作循环完成吗?

Stack Overflow用户
提问于 2018-09-10 06:11:45
EN

我有一个foreach循环,它执行许多异步函数,这些函数接收数据并呈现一个表。我想在所有异步之后调用第二个函数。foreach循环中的调用已完成,并且表被呈现。

1 43 0 票数 -1
EN
typescript
asynchronous
foreach

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-10 06:23:43

可以,停那儿吧。让每一个你称之为承诺的行动。将所有这些承诺保存为一个数组,然后调用 Promise.all

代码语言: javascript
复制
const promises:Promise<{}>[] = [];
myWhatever.forEach(
    item => {
         const promise = new Promise<{}>(
             (resolve, reject) => {
                 // Do something which ends up with resolve getting called
                 // at some point
         promises.push(promise);
Promise.all(promises)
   .then(
      () => {
          // Perform your post render tasks here
    );

您可以通过用 map 替换 forEach 来进一步简化这一过程

代码语言: javascript
复制
const promises = myWhatever.map(
    item =>
        new Promise<{}>(
             (resolve, reject) => {
                 // Do something which ends up with resolve getting called
                 // at some point
 
推荐文章
好帅的签字笔  ·  连续调用window.open() 只有第一次生效_window.open() 循环-CSDN博客
11 月前
直爽的槟榔  ·  Context Caching :: Spring Framework
1 年前
瘦瘦的野马  ·  java.io.ioexception server returned http response code 503 for url-掘金
2 年前
想出家的长颈鹿  ·  js禁用按钮及解除禁用_风起云涌2021的博客-CSDN博客
2 年前
知识渊博的斑马  ·  Linux(08):网络配置文件——其它_ITPUB博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号