对Promise一直是迷迷糊糊状态,今天记录总结下
- Promise 一个对象,用来传递异步操作消息。
demo
function getURL(URL) {
return new Promise( (resolve, reject)=> {
var req = new XMLHttpRequest();
req.open('GET', URL, true);
req.onload = function () {
if (req.status === 200) {
resolve(req.responseText);
} else {
reject(new Error(req.statusText));
}
};
req.onerror = function () {
reject(new Error(req.statusText));
};
req.send();
});
}
var URL = "http://httpbin.org/get";
getURL(URL).then((value) => {
console.log(value);
}).catch((error) => {
console.error(error);
});
Promise.resolve
//写法一
let promise = new Promise(reslove => reslove(42))
promise.then(res => {
console.log(res)
})
//写法二
Promise.resolve(42).then(res=>{
console.log(res)
})
Promise.reject
Promise.reject(new Error('err ')).catch((err) => {
console.error(err)
})
- Promise#then 不仅仅是注册一个回调函数那么简单,它还会将回调函数的返回值进行变换,创建并返回一个promise对象。
Promise.all
-
接收一个promise对象的数组作为参数,当这个数组里的所有promise对象全部变为resolve或 reject状态是时候,他才会去调用 .then方法
-
promise并不是一个个的顺序执行的,而是同时开始、并行执行的
Promise.race
- Promise.race 只要有一个promise对象进入 FulFilled 或者 Rejected 状态的话,就会继续进行后面的处理。
网友评论