Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 如何在维护执行顺序的同时减少异步等待中使用await关键字_Javascript_Async Await_Ecmascript 2017 - Fatal编程技术网

Javascript 如何在维护执行顺序的同时减少异步等待中使用await关键字

Javascript 如何在维护执行顺序的同时减少异步等待中使用await关键字,javascript,async-await,ecmascript-2017,Javascript,Async Await,Ecmascript 2017,看看foo如何有多个wait调用,有没有一种方法可以在保持执行顺序的同时简化它 我希望有可能写出这样的东西 async function foo() { await this.getAsync(); await this.getAsyncTwo(); await this.getAsyncThree(); await this.getAsyncFour(); } 或 您可以等待一个Promise.all() 这将保证您希望的顺序执行顺序 但是get this.getAsync

看看foo如何有多个wait调用,有没有一种方法可以在保持执行顺序的同时简化它

我希望有可能写出这样的东西

async function foo() {
  await this.getAsync();
  await this.getAsyncTwo();
  await this.getAsyncThree();
  await this.getAsyncFour();
}


您可以等待一个
Promise.all()


这将保证您希望的顺序执行顺序



但是get this.getAsync()是在这个.getAsyncTwo()之前执行的吗?没有必要这正是我想要实现的:(我比你投了更高的票,似乎我们采用了类似的方法,因为你的编辑更加优雅。第二种方法根本不起作用。
async
回调也不是必需的,方法中的
这个
值也不起作用,也不会按顺序计算,根本不会等待任何东西。我担心它已经是最简单的形式了。根据您计划如何处理这些等待的结果,使用下面的数组方法可能会为每行代码节省一行或两行字符。请发布您的实际代码,以便我们根据这些调用的目的进行判断。实际代码在一个函数作用域中包含4个调用(主干js模型).Async await与嵌套的.then()=>{}调用..
async/await
是ES2017的一部分,而不是ES7。您的函数都不会返回任何东西?少并不总是多。OP要求的是更简单的东西,而不是更复杂的东西。您需要绑定它,否则每个函数都会出错。这取决于谁调用了foo(),而他没有这样做,所以我假设它是同一个对象:-)
async function foo() {
  await 
   this.getAsync(), 
   this.getAsyncTwo(), 
   this.getAsyncThree(), 
   this.getAsyncFour();
}
async function foo() {
  await 
   this.getAsync() 
   .this.getAsyncTwo() 
   .this.getAsyncThree()
   .this.getAsyncFour();
}
await Promise.all([this.getAsync(), this.getAsyncTwo(), /* etc */])
async function foo() {
  const functions = [this.getAsync, this.getAsyncTwo, ...];

  for (let func of functions) { 
    await func();
  }
}