浅谈Promise的理解

promise是什么呢?一个构造函数,自身的方法有all,reject,resolve这么几个方法,原型上面有then,catch等方法.
1.他的两个特性
(1) 对象的状态不受外界影响。Promise是一个异步的操作,本身有三种状态 pending(进行中),fulfilled(已成功)和rejected(已失败).只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态.
(2)一旦改变状态,就不会再改变.比如你定义了一个Promise, 状态为fulfilled 你就会then()到成功的结果.再catch()也拿不到失败的结果了

所以我们用Promise的时候一般是包在一个函数中,在需要的时候去运行这个函数,如:

function goAsync(){
    var p = new Promise(function(resolve, reject){
        //做一些异步操作
        setTimeout(function(){
            console.log('执行完成');
            resolve('成功');
        }, 1000);
    });
    return p;            
}
goAsync()

在这里插入图片描述
然后

goAsync().then(function(data){
	console.log(data)
})

在这里插入图片描述

然后他可以做链式操作
同样定义一个Promise

function doSomething(){
    var p = new Promise(function(resolve, reject){
        //做一些异步操作
        setTimeout(function(){
            console.log('正在执行');
            resolve('成功2');
        }, 1000);
    });
    return p;            
}

goAsync().then(function(data){
	console.log(data)
	return doSomething()//这里执行下一条一定要return
}).then(function(data){
	console.log(data)
})

在这里插入图片描述
all的用法
Promise的all方法提供了并行执行异步操作的功能,并在所有异步执行完成回调一个数组.
在这里插入图片描述
race的用法
race在调用时跟all类似,都是数组加载异步,但是区别就在于race是哪个异步操作快返回哪个;
我重新定义以下deSomething()为2000ms
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值