{ resolve()})p.then(do1) .then(._new promise((resolv">
赞
踩
代码题1
- function do1() {
- console.log("任务1");
- }
- function do2() {
- console.log("任务2");
- }
- function do3() {
- console.log("任务3");
- }
- function do4() {
- console.log("任务4");
- }
-
- var p = new Promise((resolve,reject)=>{ resolve()})
- p.then(do1)
- .then(do2)
- .then(do3)
- .then(do4);
打印结果:任务1,任务2,任务3,任务4
分析:
p是一个promise对象并且调用了resolve方法,状态为resolved肯定会走then,所以肯定会输出‘任务1’;
p.then(do1)的返回值不是一个promise对象,那它的状态肯定是resolved,然后会输出‘任务2’,后面两个的状态也是resolved,也都会输出。
代码题2
- function do1() {
- console.log("任务1");
- }
- function do2() {
- console.log("任务2");
- }
- function do3() {
- console.log("任务3");
- }
- function do4() {
- console.log("任务4");
- }
-
- var p = new Promise((resolve,reject)=>{ resolve()})
- p.then(do1)
- .then(do2)
- .catch(do3)
- .then(do4);
打印结果:任务1, 任务2, 任务4
分析:
p是一个promise对象并且调用了resolve方法,状态为resolved肯定会走then,所以肯定会输出‘任务1’;
p.then(do1)的返回值不是一个promise对象,那它的状态是resolved,然后会输出‘任务2’;
p.then(do1).then(do2)的返回值不是一个promise对象,那它的状态是resolved,不会走catch这步,所以‘任务3’不会输出,直接输出‘任务4’.
代码题3
- function do1() {
- console.log("任务1");
- console.log(abc); //故意犯错
- }
- function do2() {
- console.log("任务2");
- }
- function do3() {
- console.log("任务3");
- }
- function do4() {
- console.log("任务4");
- }
-
- var p = new Promise((resolve,reject)=>{ resolve()})
- p.then(do1)
- .then(do2)
- .then(do3)
- .catch(do4);
打印结果:任务1, 任务4
分析:
p是一个promise对象并且调用了resolve方法,状态为resolved肯定会走then,所以肯定会输出‘任务1’;
然后do1()函数中,故意犯了错误,所以它的状态是rejected,那么就直接走catch这一步,然后会输出‘任务4’。
代码题4
- function increment(value) {
- return value + 1;
- }
- function doubleUp(value) {
- return value * 2;
- }
- function output(value) {
- console.log(value);
- }
- var p = Promise.resolve(1);
- p.then(increment)
- .then(doubleUp)
- .then(output)
打印结果:4
分析:
首先p是promise对象,状态为resolved,会走then(increment)这一步,然后返回值为2,不是promise对象,状态也为resolved,继续走then(doubleUp),返回值为4,然后也不是promise对象,状态也为resolved,最后走then(output),输出4。
代码题5
- //目标:是让sleep 的功能与setTimeout一样:就是等2000毫秒之后再执行后续操作。
- function sleep(time){
- // 请写出你的代码
- return new Promise((resolve,reject)=>{
- setTimeout(function(){
- resolve()
- },time)
- })
- }
-
- sleep(2000).then(()=>{
- console.log("后续操作")
- })
- console.log(2);
分析:首先我们调用sleep()方法,它的返回值一定要是promise对象,状态一定要是resolved才会走then中的函数,所以直接返回一个promise对象,并且题目要求2秒后再执行,所以就需要一个一次性定时器,时间就是调用sleep函数时传入的值。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。