-
Promise 中 then
- 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) })