new promise((resolve, reject) => {
$.ajax({
url: 'http://happymmall.com/uesr/get_user_info.do',
type: 'get',
success(res) { // 函数处理成功之后执行的方法
resolve(res);
},
error(err) { // 函数处理是吧之后执行的方法
reject(err);
}
})
}).then((res)=> {
console.dir(res); // 成功
}(err) => {
console.dir(err); // 失败
});
-
promise的兼容性,考虑BlueBrid,promise polyfill,兼容各个平台
-
then的执行是一步一步执行,等上一个then执行结束之后在执行下一个then,将上一个then返回的结果作为下一个then接收的结果。
-
then和catch返回的都是promise对象,可以在每一个then的后面加上catch可以即使捕获到错误。then和catch返回的都是promise对象,可以在每一个then的后面加上catch可以即使捕获到错误。
new promise(resolve => {
settimeout(()=>{
resolve(); // 数据完成处理
},2000);
}).then(value => {
// 成功
}).catch(erroe => {
reject(); // 数据处理出错
});
doSomething()和doSomethingElse()是两个promise函数
1.
doSomething().then(function() {
return doSomethingElse();
}).then(finalHandler);
// 先执行doSomething
=》doSomethingElse(undefined)
=》finalHandler(doSomethingElse)
2.
doSomething().then(function() {
doSomethingElse();
}).then(finalHandler);
// 先执行doSomething
=》doSomethingElse(undefined)没有返回函数,返回为null,几乎是立即执行
=》finalHandler(undefined)
3.
doSomething().then(doSomethingElse()).then(finalHandler);
// 先执行doSomething
=》doSomethingElse(undefined) 会和doSomething同时执行,返回的是promise实例,这个then会被忽略。
=》finalHandler(执行的是doSomething返回的结果)
4.
doSomething().then(doSomethingElse).then(finalHandler);
// 先执行doSomething
=》doSomethingElse(doSomething执行的结果)
=》finalHandler(doSomethingElse的结果)