Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 承诺的返还价值_Typescript_Promise - Fatal编程技术网

Typescript 承诺的返还价值

Typescript 承诺的返还价值,typescript,promise,Typescript,Promise,我错过了一些承诺的概念(在TS中)。我不明白为什么控制台上没有打印以下代码,即222参数data const p : Promise<number> = new Promise<number>(()=>{console.log(1); return 222;}) .then((data)=>{ console.log(data) return 43; }); const p:Promise= 新承诺(()=>{console

我错过了一些承诺的概念(在TS中)。我不明白为什么控制台上没有打印以下代码,即
222
参数
data

const p : Promise<number> = 
    new Promise<number>(()=>{console.log(1); return 222;})
    .then((data)=>{
    console.log(data)
    return 43;
});
const p:Promise=
新承诺(()=>{console.log(1);返回222;})
。然后((数据)=>{
console.log(数据)
返回43;
});

它只打印
1
,而不是
1
,然后打印
222
。谢谢。

您需要解决承诺:

const p : Promise<number> = 
new Promise<number>((resolve)=>{
    console.log(1); 
    resolve(222);}
)
.then(
    (data) =>{
    console.log(data);
    return 43;
 });
const p:Promise=
新承诺((决议)=>{
控制台日志(1);
决议(222);}
)
.那么(
(数据)=>{
控制台日志(数据);
返回43;
});

承诺不返回值,而是用值进行解析:

new Promise<number>((resolve, reject) => {
    console.log(1);
    resolve(2);
}).then((data) => console.log(data));
新承诺((解决、拒绝)=>{
控制台日志(1);
决心(2);
}).然后((数据)=>console.log(数据));

承诺是一种异步操作

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)
    });

你看过文件了吗?
resolve
有一条红色下划线。没有编译。@J.Doe Arash遗漏了一个参数,所以我添加了它。创建
Promise
时的回调包含两个参数:一个用于解析
Promise
的函数和一个用于拒绝它的函数。
p()
.then((resolvedResult:number)=>console.log(resolvedResult),(rejectedError)=>console.log(rejectedError))