【发布时间】:2023-03-23 06:41:01
【问题描述】:
以下不是我的确切代码,但我只是想概述一下结构。当我运行代码时,我得到控制台日志的顺序是这样的:
- '完成'
- json
我希望这是相反的情况,因为为了让函数 2 完成(并发送“完成”解析值),函数 3 必须先完成。
我想了解为什么它不能那样工作。
function1().then(() => {
return function2()
).then((message) => {
console.log(message)
})
function function2() {
return new Promise((resolve, reject) => {
fetch(url, {
method: 'get',
body: null,
headers: {
"Content-Type": "application/json; charset=UTF-8",
"Accept": "application/json; charset=UTF-8",
},
})
.then(res => res.json())
.then((json) => {
return function3(json)
})
resolve('Done')
})
}
function function3(json) {
console.log(json)
}
【问题讨论】:
-
在 fetch() 已经返回一个 Promise 时使用新的 Promise 是一种反模式。见What is the explicit promise construction antipattern and how do I avoid it?
标签: javascript promise sequence console.log