new Promise( resolve => {
setTimeout(() => {
resolve('hello')
},2000 )
})
.then()的函数里不返回新的Promise:
即使返回false, 当做结果为false
返回undefined
注: 进程在立即执行函数完成后,才终止
then 里不返回 promise,而是返回 false, 结果:因为 then 没有返回 promise 实例,所以后面的函数先执行了。
new Promise(resolve => { // 执行1 setTimeout(() => { resolve('hello'); }, 1000); }) .then(value => { console.log(value); // 执行2 console.log('everyone'); (function() { // 执行5。1、这段代码中没有返回新的值,下面一行返回的promise实际是在这个函数中返回的,不是在then的响应函数中返回的,then返回的promise实例就没有等待里面的这个promise完成。2、一直在等待执行,等最后的then返回之后,再执行这个函数。3、没有进入promise队列中,但是进程仍然是登它执行完成后才算是完成。 return new Promise(resolve => { // 自己用自己的回调 setTimeout(() => { console.log('mr'); resolve('marry'); }, 2000) }); }()); return false; // 执行3。1、false会直接传递到下一步,成为下一个then的value }) .then(value => { // 执行4 console.log(value + 'world'); // value = false; })
如果在一个then里面不直接返回一个promise对象,会继续执行
如果上一个promise没有返回值,那么在.then中就是undefined
陷阱,如果不直接return,而是放在立即执行函数中,那么立即执行函数中的内容,会被延后执行。
一、
new Promise(resolve => { // 执行1 setTimeout(() => { resolve('hello'); }, 1000); }) .then(value => { console.log(value); // 执行2 console.log('everyone'); (function() { // 执行5。1、这段代码中没有返回新的值,下面一行返回的promise实际是在这个函数中返回的,不是在then的响应函数中返回的,then返回的promise实例就没有等待里面的这个promise完成。2、一直在等待执行,等最后的then返回之后,再执行这个函数。3、没有进入promise队列中,但是进程仍然是登它执行完成后才算是完成。 return new Promise(resolve => { // 自己用自己的回调 setTimeout(() => { console.log('mr'); resolve('marry'); }, 2000) }); }()); return false; // 执行3。1、false会直接传递到下一步,成为下一个then的value }) .then(value => { // 执行4 console.log(value + 'world'); // value = false; })
promise在then中不返回promise实例对象,将会执行下一步操作,及时返回值为false,false将会作为返回值传递到相应的then函数中。