问题描述
开发的时候遇到一个场景,调用一个接口后在.then
中再调用另外一个接口后,再结束.then
方法后去继续执行后面的逻辑,但是并没有这样同步执行
问题根因
Promise.resolve('origin').then((string) =>new Promise((resolve, reject) => {setTimeout(() => {string += 'aaa'resolve(string)}, 1)})).then((string) => {sleep().then(() => {return (string += 'bbb')})}).then((string) => {console.log(`result:${string}`)})function sleep() {return new Promise((resolve) => {setTimeout(() => {resolve()}, 500)})
}
解决方法
Promise.resolve('origin').then((string) =>new Promise((resolve, reject) => {setTimeout(() => {string += 'aaa'resolve(string)}, 1)})).then((string) => {// 可以去掉 return 查看区别return sleep().then(() => {return (string += 'bbb')})}).then((string) => {console.log(`result:${string}`)})function sleep() {return new Promise((resolve) => {setTimeout(() => {resolve()}, 500)})
}
最好还是使用async await
最好还是使用async await
最好还是使用async await