| | |
| | | }; |
| | | 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('setTimeout1执行完毕'); |
| | | console.log('setTimeout执行完毕'); |
| | | resolve(); |
| | | }, 0); |
| | | }); |
| | | |
| | | //调用报错,wait2返回的是setTimeout方法。 |
| | | const wait1 = ()=> setTimeout(() => { |
| | | console.log('setTimeout2执行完毕'); |
| | | return new Promise((resolve,reject)=> { |
| | | const wait2 = ()=> new Promise((resolve,reject)=> { |
| | | resolve(); |
| | | setTimeout(() => { |
| | | console.log('setTimeout执行完毕'); |
| | | }, 1000); |
| | | }); |
| | | }, 0); |
| | | |
| | | |
| | | var use = wait().then(successCallBack,failureCallBack).then(successCallBack1,failureCallBack1); |
| | | //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> |