JS一个then方法异步的问题
问题描述
开发的时候遇到一个场景,调用一个接口后在.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
原文地址:https://blog.csdn.net/weixin_44582045/article/details/143912033
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!