Вы можете только с пользой await
обещание.
resolve
возвращает undefined
. reject
возвращает undefined
. Ничто из этого не является обещанием, поэтому await
не имеет практического эффекта.
(async() => {
let resolve, reject;
const promise = new Promise((_resolve, _reject) => {
resolve = _resolve;
reject = _reject;
});
promise.then(_ => console.log('Promise 1 resolved'));
const resolve_return_value = resolve();
console.log({
resolve_return_value
});
await resolve_return_value;
console.log('Thread 1 still running');
})();
(async() => {
let resolve, reject;
const promise = new Promise((_resolve, _reject) => {
resolve = _resolve;
reject = _reject;
});
const reject_return_value = reject();
console.log({
reject_return_value
});
await reject_return_value;
console.log('Thread 2 still running');
})();
Когда вы передаете функцию конструктору Promise
, ей дается два аргумента, которые являются функциями, которые позволяют вам разрешить или отклонить , которое обещает .
Не путайте их с Promise.reject()
и Promise.resolve()
, которые возвращают новые обещания, которые немедленно отклоняются или разрешаются.