<html>
|
<head>
|
<title>Promise</title>
|
<script type='text/javascript'>
|
var ok = true;
|
function successCallBack(){
|
console.log("成功");
|
};
|
function failureCallBack(){
|
console.log("失败");
|
};
|
function successCallBack1(){
|
console.log("成功1");
|
return new Promise((resolve,reject) => {
|
reject();
|
})
|
};
|
function failureCallBack1(){
|
console.log("失败1");
|
};
|
function successCallBack2(){
|
console.log("成功2");
|
};
|
function failureCallBack2(){
|
console.log("失败2");
|
};
|
|
const wait = ()=> new Promise((resolve,reject)=> {
|
setTimeout(() => {
|
console.log('setTimeout执行完毕');
|
resolve();
|
}, 0);
|
});
|
|
const wait2 = ()=> new Promise((resolve,reject)=> {
|
resolve();
|
setTimeout(() => {
|
console.log('setTimeout执行完毕');
|
}, 1000);
|
});
|
|
//Promise约定与链式调用
|
//1.在本轮 事件循环 运行完成之前,回调函数是不会被调用的。以下是个错误示例,resolve回调方法要在setTimeout执行完后在调用。
|
var use = wait2().then(successCallBack,failureCallBack);
|
//2.即使异步操作已经完成(成功或失败),在这之后通过 then() 添加的回调函数也会被调用。
|
var use2 = wait();
|
setTimeout(() => {
|
use.then(successCallBack,failureCallBack);
|
}, 2000);
|
//3.通过多次调用 then() 可以添加多个回调函数,它们会按照插入顺序进行执行。一般情况下then会返回一个默认的Promise对象。
|
var use3 = wait().then(successCallBack,failureCallBack).then(successCallBack1,failureCallBack1).then(successCallBack2,failureCallBack2);
|
</script>
|
</head>
|
<body>
|
|
</body>
|
</html>
|