Asyncawait.js在回调中有多个参数

Aug*_*ger 1 javascript async-await

我越来越熟悉asyncawait库.

如果我是对的,这个:

var doSth = async function() {
  var asyncResult = await promiseReturningFunction();
  subFunction(asyncResult);
};
Run Code Online (Sandbox Code Playgroud)

相当于:

var doSth = function() {
  promiseReturningFunction().then(function(asyncResult) {
    subFunction(asyncResult);
  });
};
Run Code Online (Sandbox Code Playgroud)

但是如果回调有两个参数.then(function(asyncResult1, asyncResult2) {})呢?

在其他一些语言中,我写道:

  var asyncResult1, asyncResult2 = await promiseReturningFunction();
Run Code Online (Sandbox Code Playgroud)

但我不能在JS中这样做,可以吗?await是否返回一个数组?第一个论点?

Ber*_*rgi 6

我不能在JS中这样做,可以吗?

不,你不能.承诺只用一个值来实现.

JavaScript没有元组,但您可以使用数组.通过解构,您可以使其看起来几乎与其他语言一样:

async function promiseReturningFunction() {
    await …;
    …
    return [result1, result2];
}

// elsewhere (in an async function):
var [asyncResult1, asyncResult2] = await promiseReturningFunction();
Run Code Online (Sandbox Code Playgroud)