Promise
字面意思是承诺,但具体用法和场景呢
- 一、首先了解Promise对象和Promise的调用,其中涉及到关键词resolve、reject、和then
- resolve和reject是函数里的参数翻译过来是解决和决绝,简单来理解即表示成功和失败的回调函数。
- Promise对象的调用方式需要用到then方法
例如:
let p=new Promise(function(resolve,reject){
$.ajax(
{
url:url,
dataType:"json",
success(arr)
{
resolve(arr);
},
error(err)
{
reject(err);
}
})
})
p.then(
function(res)//这个的函数就是resolve回调
{
//成功时调用这里
},
function(res){//这个的函数就是reject回调
//失败时调用这里
})
这便是Promise的运用,但实际上我们感觉不到有意义或是这样做有什么好处,确时没什么用。我们下面继续
- 二、Promise.all()
- Promise.all可以同时处理多个Promise对象,当所有的对象方法都处理成功时,我们才算是成功!
比如我们已经实例化好了两个Promise对象
Promise.all([
p1,p2
]).then(function(){"所有操作都成功调这里"},function(){"哪怕有一个失败就调这里"})
而在高版本的Jquery里,每个$.ajax都会返回一个promise对象,所以
Promise.all([
$ajax({url:url1}),
$ajax({url:url2}),
$ajax({url:url3}),
]).then(function(arr){
let [res1,res2,res3]=arr;//正好用解构赋值来接受每一个异步请求后获得的结果集
//所有操作都成功调这里
},
function(){
//哪怕有一个失败就调这里
})
- 三、Promise.race() 了解一下即可,翻译为竞速
和Promise.all()用法差不多,只不过核心逻辑不一样,如同时发起多个异步请求,谁先完成请求返回数据就用谁
总结:目前还是没有找到很实在的应用场景。。
扫描二维码关注公众号,回复:
6415297 查看本文章