当前位置: 首页 > 后端技术 > Node.js

认识和使用Promise

时间:2023-04-03 10:30:28 Node.js

Promise是一个异步操作返回的对象,用来传递异步操作的消息。可解决的问题:解决回调地狱问题,不会造成维护困难;合并多个异步请求以节省时间。Promise有三种状态:PendingPromise对象实例创建时的初始状态;Fulfilled成功时的状态;Rejected失败时的状态。使用Promise:Promise.then():用于指定当Promise对象的状态改变时要执行的操作letpromise=newPromise(function(resolve,reject){resolve('success');//reject('failure');})promise.then(function(data){console.log('data:',data);},function(err){console.log('err:',err);})Promise.all():接收一个数组,数组中包含Promise实例,必须成功才表示成功。Promise.race():接收一个数组,其中包含Promise实例。如果最早返回的对象成功,则变为成功状态。如果计数失败,它将状态更改为失败状态。letfs=require('fs');functionread(url){returnnewPromise(function(resolve,reject){fs.readFile(url,'utf8',function(err,data){if(err)reject(err);resolve(data);})})}Promise.all([read('1.txt'),read('2.txt')]).then(function(data){控制台.log(数据);},function(err){console.log('err:',err);})Promise.race([read('1.txt'),read('2.txt')]).then(function(data){console.log(data);},function(err){console.log('err:',err);})Promise.resolve():返回一个Promise实例,它是resolve状态.Promise.resolve([1,2,3]).then(函数(数据){console.log(数据);});Output:[1,2,3]Promise.reject():返回一个Promise实例,这个Promise实例处于rejecting状态。Promise.reject([1,2,3]).then(null,function(err){console.log('err',err)});输出:错误[1,2,3]