相关文章推荐
心软的香菜  ·  DTS Bundle Generator 使用教程·  1 月前    · 
痴情的铁板烧  ·  前端開發環境 + React + TS - ...·  1 月前    · 
风流倜傥的紫菜汤  ·  蓝戟 A770 显卡《使命召唤:战争地带 ...·  2 月前    · 
神勇威武的红茶  ·  《 第一屆 精選22台灣美少女V 》 ...·  5 月前    · 
不羁的闹钟  ·  黄石思想政治教师招聘_黄石思想政治教师202 ...·  1 年前    · 
冷静的日记本  ·  【教授讲专业】——国际事务与国际关系-湘潭大 ...·  1 年前    · 
神勇威武的高山  ·  《汪汪队立大功大电影2:超能大冒险》确认引进 ...·  2 年前    · 
Code  ›  我可以使用TypeScript在同步函数中等待异步操作循环完成吗?开发者社区
typescript
https://cloud.tencent.com/developer/ask/sof/185228
英勇无比的筷子
1 年前
首页
学习
活动
专区
工具
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
 
推荐文章
心软的香菜  ·  DTS Bundle Generator 使用教程
1 月前
痴情的铁板烧  ·  前端開發環境 + React + TS - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
1 月前
风流倜傥的紫菜汤  ·  蓝戟 A770 显卡《使命召唤:战争地带 2.0》测试,1080p 高画质可达 95fps - IT之家
2 月前
神勇威武的红茶  ·  《 第一屆 精選22台灣美少女V 》 Hikarii Project x TICA 2025台北國際動漫節
5 月前
不羁的闹钟  ·  黄石思想政治教师招聘_黄石思想政治教师2024年招聘信息汇总-高校人才网|高才网
1 年前
冷静的日记本  ·  【教授讲专业】——国际事务与国际关系-湘潭大学碧泉书院欢迎您
1 年前
神勇威武的高山  ·  《汪汪队立大功大电影2:超能大冒险》确认引进 超能狗狗大银幕见_美国_影片_票房
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号