promise是否为集合名词有哪些

promise 约定的意思时做动词还是名词
动词,名词一般当承诺讲
为您推荐:
其他类似问题
扫描下载二维码完全理解Promise - 推酷
完全理解Promise
注意单词对应的翻译,有助于理解整个模式
promise: 承诺
pending: 待定
settled: 定了
resolve(d): (已)解决
reject(ed): (已)拒绝
onFulfilled: 已履行(事件)
onRejected: 已拒绝(事件)
then: 然后,接下来
catch: 捕获
race: 赛跑
future: 未来(值)
thenable:可then的(有then属性的)
一.Promise是什么
一套异步操作处理机制,
是规范,jQuery、ES2015、q的promise都是对该规范的一种实现
二.Promise有什么特点
更容易控制异步操作的执行顺序
可以在一系列异步操作中,灵活地处理错误
支持链式调用,好写
能够消除回调金字塔,好看
三.Promise有什么用
实现串行任务队列
实现串行任务管道
处理运行时才能确定执行顺序的串行任务
(篇幅限制,具体适用场景以后再展开)
四.Promise类型
内部属性[[PromiseStatus]]/[[PromiseValue]]
[[PromiseStatus]]:pending(待定) | resolved(已解决) | rejected(已拒绝)
后两个统称
(定了),
是初始状态,如果
new Promise(func)
都还没有执行,此时
status=pending
[[PromiseValue]]:undefined | resolve/reject的参数 | Promise.resolve/reject的!thenable参数 | onFulfilled/onRejected的返回值
被调用时,该值会被传给
onFulfilled
onRejected
始终没有执行,那么
onFulfilled
onRejected
也始终不会执行
构造器参数resolve/reject
resolve(解决)
onFulfilled
回调,并把
的参数传递给
onFulfilled
reject(拒绝)
onRejected
回调,并把
的参数传递给
onRejected
:如果紧跟的
onRejected
回调,则传给下一个
onRejected
,还没有,接着传…如果走到头都没有,则报错Uncaught (in promise) Error:xxx
的参数是Promise对象,且该Promise对象后面没有跟
,则该对象的
会触发外层Promise对象后续的
onFulfilled/onRejected
五.基本语法
1.创建Promise对象
创建Promise的基本语法如下:
var promise = new Promise(function(resolve, reject) {
if (/*...*/) {
resolve(data);
reject(new Error('error occurs'));
promise.then(function(future) {
}, function(error) {
promise.catch(function(error) {
new Promise(func)
(不像generator只声明不执行),执行过程中遇到
装没看见(P.S.简单理解为装没看见,解释见注释),遇到
立即抛出错误,对比例子如下:
new Promise(function(resolve, reject) {
console.log('#1');
resolve(1);
console.log('#2');
// =& #1 #2 不报错(遇到resolve装没看见)
// 其实内部属性[[PromiseStatus]]和[[PromiseValue]]都变了,但没有then提供的onFulfilled回调,看不到效果
new Promise(function(resolve, reject) {
console.log('#1');
reject(new Error('reject'));
console.log('#2');
// =& #1 #2 报错:Uncaught (in promise) Error: reject(…)
// 因为后面没有then/catch提供的onRejected回调,异常没有被消费掉
的参数可以是任意类型的,但一般都传入
对象表示错误原因
2.Promise.prototype.then(onFulfilled, onRejected) 然后
onFulfilled/onRejected
回调handler,当
resolve/reject
执行时触发对应handler
promise.then
添加回调函数时,如果
状态,那么相应的方法将会被
返回一个Promise对象
(链式调用有戏),可以简单理解为:
1.如果触发了
onFulfilled
,则该对象的[[PromiseValue]]=onFulfilled的返回值,[[PromiseStatus]]=resolved
new Promise(function(resolve, reject) {
resolve(2);
}).then(function(future) {
return future * 2;
}, onRejected).then(onFulfilled, onRejected);
// onFulfilled拿到了4
2.如果触发了onRejected,则该对象的[[PromiseValue]]=onRejected的返回值,[[PromiseStatus]]=resolved
:返回对象的状态是
new Promise(function(resolve, reject) {
reject(2);
}).then(null, function(err) {
return err * 2;
}).then(onFulfilled, onRejected);
// 还是onFulfilled拿到了4,而不是onRejected
P.S.实际上[[PromiseValue]]=undefined, [[PromiseStatus]]=pending,但仍将按照上述状态来执行
3.Promise.prototype.catch(onRejected) 捕获
then(null, onRejected)
,返回一个Promise对象,可以简单理解为:
1.如果触发了onReject,则返回对象的[[PromiseValue]]=onReject的返回值, [[PromiseStatus]]=resolved
2.如果onReject始终没有触发,则装作没看见catch,直接返回原Promise对象
var p = new Promise(function(resolve, reject) {
resolve(2);
}).catch(function() {
console.log('onRejected');
p.then(onFulfilled, onRejected);
// onFulfilled拿到了2,catch没有任何影响
P.S.实际上[[PromiseValue]]=undefined, [[PromiseStatus]]=pending,但仍将按照上述状态来执行
4.Promise.all(iterable)
返回Promise对象,当
onFulfilled
,遇到第一个否定
就立即退出,并触发
onRejected
//1.全肯定集合,触发onFulfilled,传入的参数是集合中所有promise的[[PromiseValue]]组成的数组
Promise.all([getPromise(), getPromise()]).then(onFulfilled, onRejected);
//2.全否定集合,遇到第一个否定promise就退出,触发onRejected,传入的参数是该promise的[[PromiseValue]]
// Promise.all([getPromise(true), getPromise(true)]).then(onFulfilled, onRejected);
// 3.一般集合,同上
// Promise.all([getPromise(true), getPromise()]).then(onFulfilled, onRejected);
P.S.all,要么全都正常完成,要么因错误中断,全都停下来
5.Promise.race(iterable) 赛跑
返回Promise对象,当
中有任意一个
后就立即退出,并触发
onFulfilled
,遇到否定
就立即退出,并触发
onRejected
// 1.全肯定集合,遇到第一个肯定promise就退出,触发onFulfilled,传入的参数是该promise的[[PromiseValue]]
// Promise.race([getPromise(), getPromise()]).then(onFulfilled, onRejected);
// 2.全否定集合,遇到第一个否定promise就退出,触发onRejected,传入的参数是该promise的[[PromiseValue]]
// Promise.race([getPromise(true), getPromise(true)]).then(onFulfilled, onRejected);
// 3.一般集合,同上
// Promise.race([getPromise(true), getPromise()]).then(onFulfilled, onRejected);
P.S.“赛跑”,不论结果是肯定还是否定,只要最快的
6.Promise.resolve(value) 解决
resolve/reject
的参数传递给对应的
onFulfilled/onRejected
Promise.resolve(getPromise()).then(onFulfilled, onRejected);
// onFulfilled拿到resolve的参数
Promise.resolve(getPromise(true)).then(onFulfilled, onRejected);
// onRejected拿到reject的参数
是thenable对象(有
属性的对象),就会把
包装成Promise对象,该对象的
Promise.resolve({
then: function(onFulfilled, onRejected) {
// onFulfilled(1);
onRejected(new Error('obj.then err'));
console.log('obj.then');
}).then(onFulfilled, onRejected);
是!thenable值,会把该值包装成Promise对象,该对象的[[PromiseValue]]=value, [[PromiseStatus]]=resolved,所以调用then方法时,onFulfilled将会接收到这个值
Promise.resolve(1).then(onFulfilled, onRejected);
// onFulfilled拿到1
7.Promise.reject(reason) 拒绝
包装成Promise对象,该对象的[[PromiseValue]]=reason, [[PromiseStatus]]=rejected,所以调用
onRejected
将会接收到这个值
:这里没有thenable/!thenable的区别,一视同仁:
// 1.!thenable onRejected将拿到Error对象
Promise.reject(new Error('static reject')).then(onFulfilled, onRejected);
// 2.promise onRejected将拿到被包起来的肯定Promise对象
// 该对象的[[PromiseValue]]=promise, [[PromiseStatus]]=rejected
Promise.reject(getPromise()).then(onFulfilled, onRejected);
// 3.thenable onRejected将拿到{then: xxx}
Promise.reject({
then: function(onFulfilled, onRejected) {
console.log('obj.then');
}).then(onFulfilled, onRejected);
完整的测试DEMO:promise实例
六.高级用法
配合生成器(
async/await
(篇幅限制,以后再说)
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致名词专练(含答案及解析)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
名词专练(含答案及解析)
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢promise后直接加名词吗?
__黑猪丶摞
promise doing sth 表示承诺做某事.已经在做promise to do 表示承诺做某事.但还没有做
那名词呢?
名词 n. 1.承诺,诺言[C][(+of)][+(that)][+to-v]Give me your promise that you'll never be late again. 答应我你绝不再迟到了。 2.希望,前途[U][S]The young man shows promise as a poet. 这位青年有成为诗人的希望。 及物动词 vt. 1.允诺,答应[+to-v][+that][O1][O5]He promised me the book. 他答应给我这本书。 He promised to help us. 他答应要帮助我们。 I can' I've promised it to Susan. 我不能把这本书给你;我已经答应给苏珊了。 2.给人以...的指望;有...的可能[+to-v]It promises to be fine tomorrow. 明天有希望是个好天气。 3.【口】向...保证,向...断言不及物动词 vi. 1.允诺,作出保证2.有指望,有前途[Q]That project promises well. 那个工程很有希望成功。
因此,不能加名词
给分吧。。。
那After her release from prison,Judy promised_________that she
would go straight in future.(faith)
After her release from prison, Judy promised faithfully that she would go straight in future.
给分。。。。
为您推荐:
其他类似问题
扫描下载二维码运筹学复习题2013_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
运筹学复习题2013
上传于||文档简介
&&运​筹​学​复​习​题03
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩13页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 什么是集合名词 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信