在一个程序中,当回调嵌套很多时,无论是维护还是异常处理都是一件特别繁琐的事情,而且会让缩进格式变得非常冗赘,这种情况俗称“回调地狱”,这时需要通过 promise 来解决。
Promise 是一个 ECMAScript 6 提供的类,目的是更加优雅地书写复杂的异步任务。Promise 是异步编程的一种解决方案: 从语法上讲,promise是一个对象,从它可以获取异步操作的消息;从本意上讲,它是承诺,承诺它过一段时间会给你一个结果。 promise有三种状态:pending(等待态),fulfiled(成功态),rejected(失败态) ;状态一旦改变,就不会再变。创造promise实例后,它会立即执行。
promise 使用
Promise 构造函数只有一个参数,是一个函数,这个函数在构造之后会直接被异步运行,所以我们称之为起始函数。起始函数包含两个参数 resolve 和 reject。
resolve 和 reject 都是函数,其中调用 resolve 代表一切正常,reject 是出现异常时所调用的。resolve() 中可以放置一个参数用于向下一个 then 传递一个值,reject() 参数中一般会传递一个异常给之后的 catch 函数用于处理异常。
new Promise(function (resolve, reject) {
console.log(1111);
resolve(2222);
})
.then(function (value) {
console.log(value);
return 3333;
})
.then(function (value) {
console.log(value);
throw "An error";
})
.catch(function (err) {
console.log(err);
});
执行结果:
1111
2222
3333
An error
小程序封装请求步骤
第一步建立http文件夹 再建立http.js
内容如下:
第二步封装具体的请求,建立api.js
内容如下:
第三步在login页面调用接口:
具体内容如下: