当前位置: 首页 > Web前端 > JavaScript

JavaScript——承诺

时间:2023-03-26 20:37:56 JavaScript

1。PromisePromise用于表示异步操作的返回值。它有三种状态:pending:初始状态,异步操作还没有完成;fullfilled:异步操作已经成功执行;rejected:异步操作失败;可以通过Promise.then()给Promise添加一个回调函数来指定异步操作完成时(成功或失败)要执行的动作:lettask=(resolve,reject)=>{console.log("StartThe任务!”);//这里指定异步逻辑(这里使用定时器模拟)setTimeout(()=>{resolve("Success!")//成功时调用指定的回调函数},250);};/*创建Promise,立即执行任务(resolutionFunc,rejectionFunc);resolutionFunc指定成功时执行的操作,rejectionFunc指定失败时执行的操作。*/letmyPromise=newPromise(task);console.log("...");/*成功时,执行指定的回调函数;失败时,可以省略要执行的回调。*/myPromise.then((result)=>{console.log("GetResult:",result);});StartTheTask!...GetResult:Success!指定失败时应执行的操作:lettask=(resolve,reject)=>{console.log("StartTheTask...");setTimeout(()=>{reject("Failed");},250);};letmyPromise=newPromise(task);myPromise.then((result)=>{console.log("GetResult:",结果);},(err)=>{console.error("GetError:",err);});StartTheTaskGetError:Failed或通过Promise.catch()指定:myPromise.catch((err)=>{console.error("GetError:",err);});2.async/awaitasync修饰函数Promise的返回值:asyncfunctionhello(ok){if(ok){return"hello,js!";}else{抛出“不行!”;}}letmyPromise=hello(true);myPromise.then((res)=>{console.log("OK:",res);},(err)=>{console.log("Err:",err);});OK:你好,js!await后面跟着Promise,会暂停当前执行,直到Promise对应的异步操作完成。await只能在异步函数中使用。asyncfunctionmultiply(a,b){returna*b;}asyncfunctionmain(){letp1=multiply(222,333);让p2=相乘(444,555);让r1=等待p1;让r2=等待p2;returnr1+r2;}letmyPromise=main();myPromise.then((res)=>{console.log("OK:",res);},(err)=>{console.log("Err:“,错误);});好的:320346