promise一直不知道他有什么用看了不少文章都是说解决回调地狱的好方法javascript
那咱们来看看他怎么用吧java
1、 Promise对象有三种状态,他们分别是:promise
这三种状态不受外界影响,并且状态只能从pending改变为resolved或者rejected,而且不可逆。在Promise对象的构造函数中,将一个函数做为第一个参数。而这个函数,就是用来处理Promise的状态变化。async
new Promise(function(resolve, reject) { if(true) { resolve() }; if(false) { reject() }; })
上面的resolve和reject都为一个函数,他们的做用分别是将状态修改成resolved和rejected。函数
2、 Promise对象中的then方法,能够接收构造函数中处理的状态变化,并分别对应执行。then方法有2个参数,第一个函数接收resolved状态的执行,第二个参数接收reject状态的执行。spa
function fn(num) { return new Promise(function(resolve, reject) { if (typeof num == 'number') { resolve(); } else { reject(); } }).then(function() { console.log('参数是一个number值'); }, function() { console.log('参数不是一个number值'); }) } fn('hahha'); fn(1234);
then方法的执行结果也会返回一个Promise对象。所以咱们能够进行then的链式执行,这也是解决回调地狱的主要方式。code
谢谢https://www.jianshu.com/p/fe5f173276bd提供的案例对象
下面我来通俗易懂的讲一下吧blog
就是这么简单
ip
后期更新async与await
很久不见,好久没有更新博园了
最近完善一下async和await
咱们看到了async的返回的是一个promise 对象,若是要获取到promise 返回值,咱们应该用then 方法
你看是否是就出来了
好,那咱们来看看他怎么和await配合吧
这里能够看到yibu返回的是一个promise
然而咱们要知道await必选要在async函数里面才能使用
那为何startest里面会有try catch呢
这是为了捕获promise的resolve
当咱们yibu的参数填1的时候过两秒控制台就会打印“你好”
没错就是这么简单