这几个月的小程序开发可谓是把我虐的不要不要的。好在还是有点收获
一丶Promise
这个在小程序中经常遇到,刚开始完全不懂这个干什么用的。后面经过了解,这是一个解决回调地狱(Callback hell)而产出的解决方法
说的回调函数,首先要了解编程中异步与同步的概念
同步:先执行A执行完在执行B,这个过程说白了就是按照顺序执行。效率很低。值得注意的是JS就是单线程,也就是所谓的同步
异步:在执行A过程中会去执行B 这样效率就提升了效率,但是会有一个问题,加入线程A执行完的结果的a1是线程B所需的参数,那么程序就需要等待A执行完B才能执行。这个是参数问题。
还有一个问题,我们在客户端能够获取到信息,都是这样一个流程,客户端发送请求(浏览器),服务器(idea)接收客户端发送过来的请求,进行处理(增删改查)然后将处理好数据在返回给客户端(浏览器) 那么这个过程,前台可能还会发送请求其他,当我们像后台发送请求,请求还没有到底前台时,后台又发送了一个请求,这个过程会异步(姚哥经常说我犯这个错误)。
所有我们不能再请求中调用另一个请求,这样会造成异步。为什么说这种是异步,我们是不是在请求里面有请求时,第二个请求时需要第一个请求完成时参数,才能进行第二个请求的运行,所以这就是异步了
不过有了promise可以解决这个问题。
Promise 是异步编程的一种解决方案
特点
对象的状态不受外界影响 (3种状态)
Pending状态(进行中)
Fulfilled状态(已成功)
Rejected状态(已失败)
一旦状态改变就不会再变 (两种状态改变:成功或失败)
Pending -> Fulfilled
Pending -> Rejected
用法
1.1创建Promise实例
var promise = new Promise(function(resolve, reject){
// … some code
if (/* 异步操作成功 */) {
resolve(value);
} else {
reject(error);
}
})
Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。它们是两个函数,由JavaScript引擎提供,不用自己部署。
resolve作用是将Promise对象状态由“未完成”变为“成功”,也就是Pending -> Fulfilled,在异步操作成功时调用,并将异步操作的结果作为参数传递出去;而reject函数则是将Promise对象状态由“未完成”变为“失败”,也就是Pending -> Rejected,在异步操作失败时调用,并将异步操作的结果作为参数传递出去。
then
Promise实例