温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

nodejs渐入佳境[14]-promise对象处理异步

发布时间:2020-07-19 11:24:27 阅读:526 作者:jonson_jackson 栏目:开发技术
前端开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

Promise

promise是nodejs的对象,用于处理异步的同步操作。
new Promsie新建一个promise对象,两个参数(resolve,reject)是两个函数。
当调用resolve意味着操作成功。
当调用reject意味着操作失败。

resolve和reject都只会执行一次。

then 函数会在promise执行完毕之后调用。
第一个参数回调函数会在resolve成功后调用,第二个回调函数会在reject触发后调用。

resolve操作成功

123456789101112
var somePromise = new Promise((resolve,reject)=>{  setTimeout(()=>{      resolve('hey it works');  },2500);});somePromise.then((message)=>{  console.log('Success',message);},(errorMessage)=>{  console.log('Error:',errorMessage);});

打印出hey it works

reject操作失败

123456789101112
var somePromise = new Promise((resolve,reject)=>{  setTimeout(()=>{      reject('ai it is error');  },2500);});somePromise.then((message)=>{  console.log('Success',message);},(errorMessage)=>{  console.log('Error:',errorMessage);});

打印出Error: ai it is error

复杂promise

带参数并且多重then函数。

12345678910111213141516171819202122
var asyncAdd = (a,b)=>{    return new Promise((resolve,reject)=>{        setTimeout(()=>{          if(typeof a==='number' && typeof b==='number'){            resolve(a+b);          }else{            reject('Argument must be number');          }        });    });};asyncAdd(5,7).then((res)=>{  console.log('Result',res);  return asyncAdd(res,'33');},(errorMessage)=>{  console.log(errorMessage);}).then((res)=>{  console.log('should be 45',res);},(errorMessage)=>{  console.log(errorMessage);});

执行结果:

123
Result 12Argument must be numberError: ai it is error

多重then特性

在asyncAdd(5,‘7’)函数reject失败后,第二个then仍然调用的是第一个回调函数。

12345678910111213141516171819202122
var asyncAdd = (a,b)=>{    return new Promise((resolve,reject)=>{        setTimeout(()=>{          if(typeof a==='number' && typeof b==='number'){            resolve(a+b);          }else{            reject('Argument must be number');          }        });    });};asyncAdd(5,'7').then((res)=>{  console.log('Result',res);  return asyncAdd(res,'33');},(errorMessage)=>{  console.log(errorMessage);}).then((res)=>{  console.log('should be 45',res);},(errorMessage)=>{  console.log(errorMessage);});

结果为:

123
Argument must be numbershould be 45 undefinedError: ai it is error
  • 本文链接: https://dreamerjonson.com/2018/11/15/node-14-promise/

  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!

nodejs渐入佳境[14]-promise对象处理异步

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×