Обещание имеет только одно разрешенное значение, поэтому обработчику .then()
всегда передается только один аргумент.
Если вы хотите разрешить обещание с несколькими значениями, тогда вы обычно заключаете их в массив или объект, и единственным разрешенным значением будет массив или объект.
Вы можете использовать деструктуризацию, чтобы затем легко ссылаться на множественные значения, заключенные в объект или массив.
Пример:
Promise.resolve([1,2]).then(result => {
console.log(result); // logs [1,2]
return result; // pass the array on to the next step
}).then(([a, b]) => { // use destructuring to get the two items out of the array
console.log(a);
console.log(b);
});
То, что вы предложили так:
.then(returnvalue1=>funct1, returnvalue2=>funct2)
это нечто совершенно другое. Здесь вы передаете две функции .then()
, как в .then(f1, f2)
(или это похоже на то, что вы пытаетесь сделать). Когда вы передаете вторую функцию в .then()
, эта вторая функция является обработчиком отклонения (например, обработчик .catch()
), и она вызывается только в том случае, если обещание отклоняется, а аргумент будет причиной отклонения.