概念之类的,大概读者都应该有所知道,接下来咱们直入终点。promise
先让咱们来看看什么是Promise吧,他是一个object,类,arry,function?异步
首先,学习它的时候应该讲其打印出来,看看究竟是个什么如图下:函数
原来如此,是一个构造函数,里面有all、reject、resolve这几个眼熟的方法,原型上有then、catch等一样很眼熟的方法;学习
接下来正题开始:3d
创造一个pro对象,使用构造函数Promise来构造,里面有一个参数,以函数的形式,函数里面一个定时器,原始的相似于异步操做均可以是用定时器来代替。对象
这样接下来promise()执行这个函数,返回一个pro对象,这个对象就是上面所说的已Promise构造函数定义的对象,里面有一些方法上面已经展示出来了,那么,调用这个函数之后,成功了,resolve()返回一个成功的对象,reject人会一个失败的对象,这样解释有点容通,可是能够这么去理解,有助于我的去理解。blog
而后使用pro.then()方法来回调,能够接收到异步操做的参数data。get
其实 咱们用给一个回调函数也能实现这样的操做,为何还须要Promise呢,接下来看看这个代码:原型
这样也能实现以上的用法,为何还须要呢,可是你们有没有想过,当以后还须要回调怎么办,出现屡次回调呢?回调函数
那么,Promise的方法就展示了他的好处
链式操做的模式来读解js,接下来在看看这段代码:
完美解决了多层回调。
那么咱们在来介绍一下Promise的另一下用法reject,catch
在resolve的回调中,咱们console.log(somedata);而somedata这个变量是没有被定义的。若是咱们不用Promise,代码运行到这里就直接在控制台报错了,不往下运行了。可是在这里,会获得这样的结果: