promise的概念以及状态

promise是js中进行异步编程新的解决方案,具体讲语法上讲是一个构造函数,功能上讲是用来封装异步操作并且获得其结果

promise的状态:初始的状态是pending(未确定的)可能发展为一下两种结果:1:resolved(成功的状态)2:rejected(失败的状态)resolved的结果返回数据一般为value,而rejecte的的结果返回数据为reason;

先进行new Promise()pending状态

promise的概念以及状态_第1张图片

//1.创建一个新的promise对象

const p=new Promise((resolve,reject)=>{

console.log('执行excutor')

//执行器函数,同步回调

//执行异步操作任务

setTimeout(()=>{

//3.1成功调用resolve(value)

//3.2失败了,调用reject(reason)

const time=Date.now()

if(time%2==0){

resolve('成功的数据')

}else{

reject('失败的数据')

}

},1000)

})

console.log('new Promise之后')

//执行结果为 执行excutor,new Promise之后 ,因为执行器函数,同步回调

p.then(

value=>{

//接收得到成功的value数据  onResolved

console.log('成功的回调',value)

},

reason=>{

//接收得到失败的reason数据 onReject

console.log('失败的回调',reason)

}

)

promise与普通的纯回调函数的区别:

普通的纯回调函数,需要先指定回调函数,然后才启动异步回调(指定回调函数必须在启动异步任务前)

//1:更加灵活promise 可以先启动异步任务,后面指定回调函数(指定回调函数一般在启动异步任务后,但是有了结果后再指定回调函数也可以)

!promise中1秒后有了结果,3秒后才指定回调

setTimeout(()=>{

p.then(

value=>{

//接收得到成功的value数据  onResolved

console.log('成功的回调',value)

},

reason=>{

//接收得到失败的reason数据 onReject

console.log('失败的回调',reason)

}

)

},3000)

//2:支持链式语法,可以解决地狱回调问题(回调函数嵌套使用不便于阅读和理解)

使用Promise解决地狱回调还会有回调函数,终极解决地狱回调问题使用async、awiat


doSomething.then(function(result){

return  doSomethingSecond(result)

}).then(function (newRequest) {

return  doSomethingtThird(newRequest)

}).then(function (finalRequest) {

console.log(finalRequest)

}).catch(finalCallback)

async function request(){

try{

const request =await doSomething()

const newRequest =await doSomethingSecond(request)

const finalRequest =await doSomethingtThird(newRequest)

console.log(finalRequest)

}catch(error){

finalCallback(error)

}

}

你可能感兴趣的:(promise的概念以及状态)