首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript承诺混淆顺序执行两个函数

Javascript承诺混淆顺序执行两个函数
EN

Stack Overflow用户
提问于 2017-07-05 07:23:30
回答 2查看 46关注 0票数 0

现在我有funcA,funcB,arrayA和arrayB。在funcA中,arrayB将通过请求一些外部信息来填充自己,执行此操作的时间各不相同。我希望它在arrayB.length == arrayA.length之后执行funcB,arrayB是一个全局变量,它的内容将在funcB中使用。假设我需要使用JQuery deferred和promise..so,我试过了

代码语言:javascript
运行
复制
     var arrayB = [];
     var hi = funcA();
     hi.then(funcB());

     funcA(){
            var Dfd = $.Deferred();
            arrayB.forEach(function(x, i){
                   some external retrieval;
                   if (arrayB.length == arrayA.length){
                         Dfd.resolve(arrayB);
                   }
             })

        return Dfd;
     }

但这并没有什么帮助。我该怎么改呢?

EN

回答 2

Stack Overflow用户

发布于 2017-07-05 08:51:19

arrayB.forEach什么都不会做。它是空的。忘记所有这些函数并延迟。

代码语言:javascript
运行
复制
fetch('/mydata.json')
  .then(function(response) {
    //save your data from response to arrayB
    //call your funcA
  })
  .catch((error) => {
    console.log(error);
});

我不知道你为什么需要这个:

代码语言:javascript
运行
复制
if (arrayB.length == arrayA.length){
   Dfd.resolve(arrayB);
}

但在调用funcA之前,请随时进行检查。

票数 0
EN

Stack Overflow用户

发布于 2017-07-06 03:58:08

我通过这样做解决了这个问题:

代码语言:javascript
运行
复制
  hi.done(function(){funcA()});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44915121

复制
相关文章

相似问题

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