#javascript #node.js
#javascript #node.js
Вопрос:
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values);
});
Promise(promise2).then((values) => {
console.log(values);
});
Promise.all
показывает результат «Array [3, 42, «foo»]», но Promise
выдал мне сообщение об ошибке «undefined не является обещанием»
я попытался отредактировать его как new Promise
, но он выдал мне новую ошибку «Распознаватель обещаний 42 не является функцией»
Ответ №1:
Вам нужно использовать его следующим образом:
Promise.resolve(promise2).then((values) => {
console.log(values);
});
Ответ №2:
Конструктор обещания используется для переноса функции, а не целого числа, поэтому вы получаете сообщение об ошибке при попытке деформировать целое число внутри обещания. Ссылка
Вы можете сделать это двумя способами:-
- Создайте обещание, разрешенное, как вы сделали в
promise1
const promise1 = Promise.resolve(3);
const promise2 = Promise.resolve(42);
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, "foo");
});
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values);
});
promise2.then((values) => {
console.log(values);
});
- Вы можете обернуть целочисленное значение внутри нового обещания, а затем использовать это значение
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, "foo");
});
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values);
});
new Promise((resolve, reject) => {
resolve(42);
}).then((values) => {
console.log(values);
});