Я пропустил часть концепции обещаний (в TS). Я не понимаю, почему следующий код не выводит на консоль параметр data, то есть 222.
const p : Promise<number> =
new Promise<number>(()=>{console.info(1); return 222;})
.then((data)=>{
console.info(data)
return 43;
});
Он печатает только 1 вместо 1, а затем 222. Спасибо.






Вам нужно разрешить обещание:
const p : Promise<number> =
new Promise<number>((resolve)=>{
console.info(1);
resolve(222);}
)
.then(
(data) =>{
console.info(data);
return 43;
});
resolve отмечен красным подчеркиванием. Не компилируется.
@ J.Doe Arash пропустил параметр, поэтому я добавил его. Обратный вызов при создании Promise принимает два параметра: функцию для разрешения Promise и одну для его отклонения.
Обещание не возвращает значение, оно разрешается значением:
new Promise<number>((resolve, reject) => {
console.info(1);
resolve(2);
}).then((data) => console.info(data));
Обещание - это асинхронная операция,
const p : Promise<number> =
new Promise<number>((resolve, reject)=>{
//do some operations here, and the desired output is ready, say result = 5;
resolve(result)
//or if you hit an error you can get the error obj, e and
reject(e)
});
Вы можете выполнить вызов обещания сейчас, и результат после выполнения будет доступен в .then.
p()
.then((resolvedResult:number)=>console.info(resolvedResult),(rejectedError)=>console.info(rejectedError))
Вы читали документацию? developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…