Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 等待函数,但同步它们,然后调用最后一个函数_Javascript_Vue.js_Async Await_Vue Component_Es6 Promise - Fatal编程技术网

Javascript 等待函数,但同步它们,然后调用最后一个函数

Javascript 等待函数,但同步它们,然后调用最后一个函数,javascript,vue.js,async-await,vue-component,es6-promise,Javascript,Vue.js,Async Await,Vue Component,Es6 Promise,因此,我正在使用Vue、Node和typescript。 我正在获取我的所有其他函数都需要的数据,因此getDataForFunction123需要等待,这很好 然后我有3个函数,它们获取不同的内容,而不是相互依赖。但所有答案都由Function123ISDONE之后的最后一个函数updatea使用。但当我现在有了它,我们需要等待函数1、2和3的同步。这需要很多时间。 我想让函数1、2和3同时做这些事情,但也想知道3都完成了,然后在函数123ISDONE之后调用updateAfterFuncti

因此,我正在使用Vue、Node和typescript。 我正在获取我的所有其他函数都需要的数据,因此getDataForFunction123需要等待,这很好

然后我有3个函数,它们获取不同的内容,而不是相互依赖。但所有答案都由Function123ISDONE之后的最后一个函数updatea使用。但当我现在有了它,我们需要等待函数1、2和3的同步。这需要很多时间。 我想让函数1、2和3同时做这些事情,但也想知道3都完成了,然后在函数123ISDONE之后调用updateAfterFunction123IsDone

代码如下:

async initData () {
  await this.getDataForFunction123();

  await this.function1();
  await this.function2();
  await this.function3();

  this.updateAfterFunction123IsDone();
}
我不认为一个承诺就能解决这个问题?因为它也在按顺序而不是同时执行功能?正当这不会为我节省时间,但会为我节省一些错误处理的时间?

承诺。一旦所有承诺都得到解决,所有承诺都会触发。因此,立即运行所有函数function1、function2、function3,无需等待,然后在其承诺得到解决后继续:

async initData () {
  await this.getDataForFunction123();

  const p1 = this.function1();
  const p2 = this.function2();
  const p3 = this.function3();

  await Promise.all([p1, p2, p3]);
  this.updateAfterFunction123IsDone();
}
一旦所有的承诺都解决了,所有的火灾都会发生。因此,立即运行所有函数function1、function2、function3,无需等待,然后在其承诺得到解决后继续:

async initData () {
  await this.getDataForFunction123();

  const p1 = this.function1();
  const p2 = this.function2();
  const p3 = this.function3();

  await Promise.all([p1, p2, p3]);
  this.updateAfterFunction123IsDone();
}

我想你误解了什么是承诺。答应我,一切都不做任何特别的事,它只是一种实用的方法。如果你在没有等待的情况下创建了三个承诺,那么这三个承诺都将立即并行执行,至少在JavaScript中是如此。我认为你误解了承诺是什么。答应我,一切都不做任何特别的事,它只是一种实用的方法。如果您在不等待的情况下创建了三个承诺,那么这三个承诺都将立即并行执行,至少在JavaScript中是并行的。谢谢。这正是我想要的。我需要读进去才能保证。我看到的更多一点。谢谢谢谢这正是我想要的。我需要读进去才能保证。我看到的更多一点。谢谢