1.Promise 的含义
Promise 是异步编程的一种解决方案,它相当于一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。Promise 从语法上来说是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。
创建promise:
{
//Promise()函数接收的是一个匿名函数回调
//resolve:成功
//reject:失败
// 上面这两个参数 都是函数执行
let promise = new Promise(function (resolve, reject) {
let istrue = false;
if (istrue) {
setTimeout(function () {
resolve('数据');
}, 1000);
}
else {
reject('失败');
}
});
2.Promise的特点
(1)对象的状态不受外界影响。
(2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。
3.Promise的缺点
(1)Promise无法取消,一旦新建它就会立即执行,无法中途取消。
(2)如果不设置回调函数,Promise内部抛出的错误将不会反应到外部。
(3)当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
4. 原生ajax写promise
{
let fun = (method, src, data) => {
return new Promise((resolve, reject) => {
//创建对象
let http = new XMLHttpRequest();
let handle = () => {
if (http.readyState !== 4)
return;
if (http.status == 200) {
resolve(http.response);
}
else {
reject('异常');
}
}
if (method.toLowerCase() == "get") {
if (data) {
src += "?";
src += data;
}
http.open(method, src);
http.send();
}
else {
http.open(method, src);
if (data) {
http.send(data);
}
else {
http.send();
}
}
http.onreadystatechange = handle;
});
}
fun('GET', './stu.txt').then(function (res) {
console.log(res);
}).catch(function (err) {
console.log(err);
});
}