首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在TypeScript中保证执行顺序

如何在TypeScript中保证执行顺序
EN

Stack Overflow用户
提问于 2018-12-26 05:58:33
回答 1查看 1.3K关注 0票数 0

当我在typescript中遇到执行顺序的问题时,我正在尝试实现一些功能:

代码:

代码语言:javascript
复制
new Promise((resolve) => {
          setTimeout(()=>{
            console.log("function11111");
            resolve();
          }
          ,3000);      
          
        })
        .then(_=>{
          setTimeout(()=>{
            console.log("function22222");
          }
          ,2000);   
        })
        .then(_=>{
          setTimeout(()=>{
            console.log("function3333333");
          }
          ,1000);   
        }) 

OutPut:

代码语言:javascript
复制
function11111
function33333
function22222

我的问题是:

1)对于function1111,如果我们用一个耗时几秒的函数替换这个console.log('fucntion1111'),在这种情况下,我的代码将在函数执行完成之前触发resolve(),那么如何确保等待我的函数

2)在我正在做的代码中,为什么执行不尊重我的顺序?我在想,promise就是为了这个目的而创建的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-26 06:12:15

问题是,一旦调用了初始resolve(),所有的then处理程序都会同时被调用。由于每个都有不同的超时,因此输出顺序为function33333 and then functon2222

要维护订单,您可以执行promise链接,它将在调用下一个then()块之前等待前一个promise得到解析。

我已经把诺言用链子锁住了。如果你需要更多的澄清,请让我知道。

代码语言:javascript
复制
new Promise((resolve) => {
      setTimeout(()=>{
        console.log("function11111");
        resolve();
      }
      ,3000);

    })
    .then(_=> new Promise(resolve => {
      setTimeout(()=>{
        console.log("function22222");
        resolve();
      }
      ,2000);
      })
    )
    .then(_=> new Promise(resolve => {
      setTimeout(()=>{
        console.log("function3333333");
        resolve();
      }
      ,1000);
      })
    );

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53925870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档