及物动词 vt. & 不及物动词 vi.
promise使用 promise使用什么设计模式
promise使用 promise使用什么设计模式
promise使用 promise使用什么设计模式
promise使用 promise使用什么设计模式
1.允诺; 答应 I can't promise.我不能应允。I want you to promise me.我想让你对我做出承诺。I promised that I would write regularly.我答应要经常写信。2.有…希望; 预示 He promises highly.他的前途远大。A timely snow promises a good harvest.瑞雪兆丰年。She promised to be a brilliant musician.有迹象表明她会成为有才华promise.then(function(value) {的音乐家。名词 n.1.承诺, 诺言 I'd like to come with you but that's not a promise, don't rely on it.我愿意和你一起去, 但这不是允诺, 别指望我一定去。2.希望, 前途 You show promise as a musician but your lack of pract is keeping you} else { back.你有希望成为音乐家, 但是缺乏实践会影响你的发展。3.获得成功的迹象4.吉兆;迹象及物动词 vt.1.许诺;承诺;保证2.使很可能;预示
用法和搭配:
for(var i=0;ipromise sth 答应某人某事
promise to do sth 答应做某事
keep a promise 遵守诺言 扩展资料 promise
v.许诺;承诺;答应;保证;使很可能;预示
n.诺言;许诺;承诺;获得成功的迹象;吉兆;迹象
promise例句:
The t off has promised to resume first class mail delivery to the area on Friday
邮局承诺于星期五恢复对这个地区类邮件的递送。
In 1920 the great powers promised them an independent state
1920年,列强承诺让他们成为一个的`。
If you make a promise, you should keep it
如果做出了承诺,就应该遵守。
While it will be fun, the seminar also promises to be most instructivthis.$chained.push({ onFulfilled, onRejected });e.
这次的研讨会不仅会有趣,而且有可能会颇具启发意义。
The boy first showed promise as an athlete in grade school.
这个男孩在上小学的时候就初次显示出成为运动员的潜力。
He had promised that the rich and privileged would no longer get preferential treatment
他已经保证富人和特权阶层不会再得到优惠待遇。
async/await机制我也不是太明白,还特意去看了看相关介绍
看后觉得你这段代码很可能问题
let p1 = new Promise(function(resolve,reject){
//调用上传子组件的异步上传文make a promise 许诺件方法
_this.$refs.multipleUpload.submitUpload()
resolve(true)
}) resolve(ret);因为getResult被定义为async异步,其本质会返回一个promise
然后你又在里面new一个Promise,貌似有嵌套了。
直接return上传结果试试
async function getResult() {
let p1 = await _this.$refs.multipleUpload.submitUpload();
console.log(p1);
return p1
}let result = getResult();
result.then(..// 第二个参数非必传,它会在promise已失败(rejected)以后被调用.);
一.定义
//Promise构造函数promise是对异步编程的一种抽象。它是一个对象,代表一个必须进行异步处理的函数返回的值或抛出的异常。也就是说promise对象代表了一个异步作,可以将异步对象和回调函数脱离开来,通过then方法在这个异步作上面绑定回调函数。
遵循的是commonJS promise/A+规范。
1.状态
promise有3种状态:pending(待解决,这也是初始化状态),fulfilled(完成),rejected(拒绝)。
2.接口
promise接口then方法,它需要2个参数,分别是resolveHandler和rejectedHandler。并且返回一个promise对象来支持链式调用。
promise的构造函数接受一个函数参数,参数形式是固定的异步任务,举一个栗子:
function sendXHR(resolve, reject){
xhr.open('get', 'QueryUser', true);
xhr.onload = function(){
if((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304){
resolve(xhr.responseText);
reject(new Error(xhr.statusText));
}};
xhr.onerror = function(){
reject(new Error(xhr.statusText));
}xhr.send(null)
}二.实现
要实现promise对象,首先要考虑几个问题:
2.如何实现链式调用并且管理状态
首先是构造函数:
//全局宏定义
var PENDING = 0;
var FULFILLED = 1;
var REJECTED = 2;
function Promise(fn){
var self = this;
self.state = PENDING;//初始化状态
self.value = null;//存储异步结果的对象变量
function fulfill(result){
if(self.state === PENDING){
self.state = FULFILLED;
self.value = result;
self.handlers[i](result);
}}
}//异步任务失败后的处理,
function reject(err){
if(self.state === PENDING){
self.state = REJECTED;
self.value = err;
}}
fn&&fn(fulfill,reject);
};
构造函数接受一个异步函数,并且执行这个异步函数,修改promise对象的状态和结果。
回调函数方法then:
//使用then方法添加回调函数,把这次回调函数return的结果当做return的promise的resolve的参数
var self = this;
return new Promise(function(resolve, reject){
var onResolvedFade = function(val){
var ret = onResolved?onResolved(val):val;//这一步主要是then方法中传入的成功回调函数通过return来进行链式传递结果参数
if(Promise.isPromise(ret)){//回调函数返回值也是promise的时候
ret.then(function(val){
resolve(val);
});
}};
var onRejectedFade = function(val){
var ret = onRejected?onRejected(val):val;
reject(ret);
};
self.handlers.push(onResolvedFade);
if(self._status === FULFILLED){
onResolvedFade(self._value);
}if(self._status === REJECTED){
onRejectedFade(self._value);
}});
}测试代码:
function async(value){
var pms = new Promise(function(resolve, reject){
setTimeout(function(){
}, 1000);
});
return pms;
}async(1).then(function(result){
console.log('the result is ',result);//the result is 2
return result;
}).then(function(result){
console.log(++result);//2
});
swear语气更重
...偏向于“发誓”
promise
偏向于
许诺
用法结构基本一样
就是语气不同
场合不同
你认为是特别严肃的事情
吧比如有人冤枉了你
你要辩解
iswear
我但是事情总有特例,现实npm上,还是有很多的库还没有用promise进行实现,如:node 中的标准库。这样让使用者很难受,用着用着 promise 出现了一个 callback ,你会觉得世界为什么就这么乱呢?没做。
用i
promise
就可以了.
promise的作用:ajax是异步请求,多层嵌满意请好评,祝学习进步!套会造成回调地狱,promise模拟同步,将异步回调类似于同步来处理业务逻辑。
var p = new Promise(function(){
//这里用于处理异步的回调
}),必传回调函数,不传程序会抛出异常。
创建实例对象时,回调函数会立即执行。
pending:正在进行状态
fulfilled:完成状态
rejected:失败状态
传参1 resolve,是个函数,只要这个函数执行了说明是成功状态,参数2选传,rejecte,是个函数,这个函数执行了说明是失败状态。这两个只能执行一个,变化不可逆。
promise两种结果:
从进行到失败
通过rejecte(data)h或者resolve(data)将异步响应的数据提取出来,在promise外部使用。
promise的then方法,用于处理成功或者失败的回调。
//在bluebird的API中,两个方法可以帮助你,它们分别是:promiseify 和prnodeCallback 是 Nodojs 中的一个常用词。表达是意思是:Nodejs 中,以错误优先的回调函数的总称。omisifyall。接收上面的回调
var p1 =p.then(function(res){
p1=p.then(function(res){
return res
}).then(function(data){
//处理成功回调
}).catch(function(){
//处理失败回调
})
可以简写p.then(function(res){
//处理成功信息
},function(err){
//处理异常信息
})。但一般不这样写。
使用案例如下,
promise的then方法是异步方法,但会优先于定时器执行。
Promise作名词的时候,表示有希望、有前途。朋友说不久前听一个朋友七岁的女儿弹琴,颇有天才。那位钢琴老师说:She has high promise of a pianist(大有希望成为钢琴家。)此外称一个人大有前途,除high promise外,常见的还有bright, brilliant或者great等词形容。比如朋友的男孩子能说善辩,朋友说他:He has a great future to be a statean. 除了上面的用法之外,promise还有下面这样的用法:The sky gives promise of fine weather tomorrow(连日阴雨,忽见天空云随风散,可知明日将会转晴。);The report gives promise of a better tomorrow(经济低迷,前者未可乐观,但是有报告指出明天会转好。) Promise作动词用,有希望和约束两个意思。
-mised, -mising有若干个异步任务,需要先做任务1,如果成功后再做任务2,任何任务失败则不再继续并执行错误处理函数。
resolve(value);;要串行执行这样的异步任务,不用Promise需要写一层一层的嵌套代码。有了Promise,我们只需要简单地写:
//异步任务成功后处理,这不是回调函数job1.then(job2).then(job3).catch(handleError);请采纳
promise 的用This year promises to be another good one for harvests.法小节
上面三种状态里面,fulfilled和rejected合在一起称为resolved(已定型)。状态的切换只有两条路径:种是从pending=>fulfilled,另一种是从pending=>rejected,状态一旦切换就不能再改变。promise
KK: []
DJ: []
n.
1. 承诺,诺言[C][(+of)][+(that)][+to-v]
答应我你绝不再迟到了。
2. 希望,前途[U][S]
The young man shows promise as a poet.
这位青年有成为诗人的希望。
vt.
He promised me the book.
他答应给我这本书。
He promised to us.
他答应要帮助我们。
I can't give you the book; I've promised it to Susan.
我不能把这本书给你;我已经答应给苏珊了。
2. 给人以...的指望;有...的可能[+to-v]
It promises to be fine tomorrow.
明天有希望是个好天气。
3. 【口】向...保证,向...断言
vi.
1. 允诺,作出保证
2. 有指望,有前途[Q]
That project promises well.
那个工程很有希望成功
promise 的用法是 promise + to V
}再来看下我们的then函数。then函数的两个参数,onFulfilled表示当promise异步作成功时调用的函数,onRejected表示当promise异步作失败时调用的函数。如我们调用then的时候,promise已经执行完成了(当任务是个同步任务时),我们可以直接根据实例的状态来执行相应的函数。如promise的状态还是PENDING, 那我们就将onFulfilled和onRejected直接存储到chained这个变量当中,等promise执行完再调用。promis从进行到成功e
vt., vi.
He has promised to behe better henceforth.
他答应从今以后要表现得好些。
She promised her brother that she would write to him.
她答应弟弟将给他写信。
"It is not so , I promise you."
"我敢向你保证,事情并不那么简单。"
预示;给予…希望
晨雾预示好天气。
今年看来又是个丰收年。
在实际项目中,可能会遇到 需要从前两个接口中的返回结果获取第三个接口的请求参数这种情况。 也就是需要等待两个/多个异步完成后,再进行回调。
2.1 promisify对于异步回调,首先想到的就会是使用Promise封装,然后使用.then()来触发回调。那么对于两个或多个异步均完成后再触发回调可以使用Promise.all()方法。
Promise.all(iterable)Early mist promises fair weather. 方法返回一个 Promise 实例,此实例在 iterable 参数内所有的 promise 都“完成(resolved)”或参数中不包含 promise 时回调完成(resolve);如果参数中 promise 有一个失败(rejected),此实例回调失败(reject),失败原因的是个失败 promise 的结果。
摘自 说明
版权声明:本文内容由互联。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发 836084111@qq.com 邮箱删除。