当前位置: 首页 > 知识库问答 >
问题:

Javascipt中的promise不会执行循环

堵浩波
2023-03-14

我用Javascript编写了这段代码

if(!this.top3){
    const promises = this.images.map((el, index) => {
      return this.getData(el.title, index);
    });

    return Promise.all(promises)
    .then(() => {
      this.getUnknown();
      this.$emit("onTaskFinished");
      //this.showResults = true
    })
    .catch((err) => {
      console.error(err);
    });

this.images是一个数组,它包含data中的图像和title中的图像名称。

现在我需要更改函数,因为this.images将变成包含图像组的数组。每组都是一个数组,每个数组包含data中的图像和title中的图像名称。

于是我就这样改了函数:

var j=0;
 for(j=0; j<this.images.length; j){
      this.imgIndex = j;
       const promises = this.images[j].title.map((el, index) => {
            return this.getData(el, index);
       })

       return Promise.all(promises)
       .catch((err) => {
          console.error(err);
        });
       
        this.getUnknown();
        this.$emit("onTaskFinished");
  }

这样它就不起作用了,因为for循环只执行一次。

我认为问题是承诺,因为如果我删除它,程序将永远留在循环中。我刚开始使用JavaScript,所以我知道我犯了一些错误。

共有1个答案

陈修诚
2023-03-14

您不需要在循环中使用return。使用return在第一次迭代后停止循环。

var j=0;
for(j=0; j<this.images.length; j){
      this.imgIndex = j;
       const promises = this.images[j].title.map((el, index) => {
            return this.getData(el, index);
       })

       await Promise.all(promises)
       .catch((err) => {
          console.error(err);
        });
       
        this.getUnknown();
        this.$emit("onTaskFinished");
  }
 类似资料:
  • 问题内容: 我已经编写了一个包含循环的“ Hangman”游戏,不断询问用户字母,直到他们解决单词或耗尽生命。奇怪的是,在满足条件时循环不会停止。 这是包含循环的游戏逻辑的实现: 可变结果是从方法中获取返回值。这是实现。 难道是我返回导致循环不断循环的值的方式吗?我这样声明了这些值: 问题答案: 逻辑上,根据德摩根定律, 是相同的 这永远是一个真实的表达。 条件可能应该是 当应用与上述相同的法律时

  • 在我的spring boot应用程序中,我有一个组件,它有一个方法,在下面的无限循环中运行一些作业,实际上它检查数据库中的一些数据:

  • 本文向大家介绍setTimeout和Promise的执行顺序?相关面试题,主要包含被问及setTimeout和Promise的执行顺序?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 首先我们来看这样一道题: 输出答案为2 10 3 5 4 1 要先弄清楚settimeout(fun,0)何时执行,promise何时执行,then何时执行 settimeout这种异步操作的回调,只有主线程

  • 我实现了以下promise函数,比如 cart.getbasket(req) Cart.UpdateBasket(req) Cart.UpdateDefaultShipport(req) cart.GetBasketObject(basket) 当前我执行代码时使用 我读过关于的文章,并想把它用作逻辑的流程,但当我使用时,它并不像预期的那样工作,因为我看到each的

  • 本文向大家介绍C#中for循环、while循环循环执行的方法,包括了C#中for循环、while循环循环执行的方法的使用技巧和注意事项,需要的朋友参考一下 先给大家介绍下C#中的循环执行for循环 在这一节练习中,我们向大家介绍一下C#中的另一种重要的循环语句,for循环。 表达式1:一般为赋值表达式,给控制变量赋初值; 表达式2:逻辑表达式,循环控制条件;当条件为真时,循环执行循环体中的语句。

  • 如果我像下面这样使用forloop- 它只对Row的最后一个值执行driver.findElement命令。如果我在这个for循环中放入第一个return语句(如上),它只对row=2执行并关闭浏览器。