- promise的then中默认返回一个promise实例
- 当then中没有return时返回的是undefined
- 当then中return的对象或者基本类型等非new Promise实例时,对下一个进程then是同时执行的
<!--同时执行111和222-->
new Promise(()=>{})
.then(val=>{
console.log(111);
return `string`;
})
.then(data=>{
console.log(222);
return data
})
.catch(err=>{
console.error(err)
})
- 当then中return的是一个new Promise或者Promise.resolve()等实例时,对下一个进程then时队列顺序执行的
<!--顺序执行 先111再222-->
new Promise(()=>{})
.then(val=>{
console.log(111);
return Promise.resolve(`string`);
})
.then(data=>{
console.log(222);
return data
})
.catch(err=>{
console.error(err)
})
- 在node项目中,多少情况下都是以函数导出导入方式使用Promise【尤其是路由层和数据层】,此时一定要对函数return才有效
<!--函数return-->
<!--出 a.js-->
const handerGetrouter = (reqObj)=>{
...
return new Promise((resolve,reject)=>{
resolve(6666)
})
.then((val)=>{
return val;
})
}
module.exports = {
handerGetrouter
}
<!--入 b.js-->
const {handerGetrouter}=require('a');
...
handerGetrouter(reqObj)
.then((data)=>{
console.log(data);
....
})
.catch(err=>{
console.error(err)
})