本文主要讲解“如何理解ES6承诺对象”,简单明了,易学易懂。请跟随边肖的思路,一起学习学习《如何理解ES6承诺对象》。
概述
这是异步编程的解决方案。
从语法上来说,Promise是一个对象,您可以从中获得异步操作的消息。
Promise 状态
状态的特点
Promise的异步操作有三种状态:待定、完成和拒绝。除了异步操作的结果,没有其他操作可以改变这种状态。
承诺对象只有状态从待定变为已履行和从待定变为已拒绝。只要实现了,拒绝了,状态就永远不会变,也就是解决了。
constp1=newPromise(函数(解析,拒绝){ 0
解析(“成功1”);
解析(“成功2”);
});
constp2=newPromise(函数(解析,拒绝){ 0
解析(“成功3”);
拒绝(“拒绝”);
});
p1.then(函数(值){ 0
console.log(值);//成功1
});
p2 .然后(函数(值){ 0
console.log(值);//成功3
});状态的缺点
不能取消承诺,一经创建立即执行,不能中途取消。
如果没有设置回调函数,Promise内部抛出的错误不会反映到外部。
当它处于挂起状态时,不可能知道它正在前进到哪个阶段(刚刚开始或即将完成)。
then 方法
然后方法接收两个函数作为参数,第一个参数是Promise执行成功时的回调,第二个参数是Promise执行不成功时的回调。将只调用这两个函数中的一个。
then 方法的特点
在JavaScript事件队列的当前操作完成之前,永远不会调用回调函数。
constp=newPromise(函数(解析,拒绝){ 0
决心(“成功”);
});
p.then(函数(值)}
console.log(值);
});
console . log(' first ');
//第一
//成功回调函数以。然后将随时被调用。
多次通话。然后,您可以添加多个回调函数,这些函数将按照插入的顺序独立运行。
constp=newPromise(函数(解析,拒绝){ 0
决心(1);
}).然后(函数(值){//第一个然后//1。
console.log(值);
return value * 2;
}).然后(函数(值){//第二个然后//2。
console.log(值);
}).然后(函数(值){//第三个然后//未定义。
console.log(值);
return Promise . resolve(' resolve ');
}).然后(函数(值){//第四个然后//解析。
console.log(值);
return Promise . reject(' reject ');
}).然后(函数(值){//第五个然后//reject:reject。
console.log('resolve: '值);
},函数(err){ 0
console . log(' reject : ' err);
});然后方法将为链调用返回一个处于已解析或已拒绝状态的Promise对象,Promise对象的值就是返回值。
then 方法注意点
Promise的简单链式编程最好保持扁平化,不要嵌套Promise。
始终返回或终止承诺链。
constp1=newPromise(函数(解析,拒绝){ 0
决心(1);
}).然后(函数(结果){ 0
p2(结果)。然后(new result=P3(new result));
}).然后(()=P4());当创建一个新的Promise但忘记返回它时,相应的链被断开,导致p4与p2和p3同时进行。
在大多数浏览器中,建议遵循。无法终止的承诺链中拒绝后的捕获(错误=console.log(错误))。
感谢您的阅读。以上是“如何理解ES6承诺对象”的内容。看完这篇文章,相信你对如何理解ES6 Promise Object有了更深的理解。具体用法需要实践验证。在这里,边肖将为大家推送更多相关知识点的文章。欢迎关注!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/65488.html