JavaScript 权威指南 P318
解决期约
let p1 = fetch("/api/user/profile") // 期约 1 任务 1
let p2 = p1.then(c1) // 期约 2 任务 2
let p3 = p2.then(c2) // 期约 3 任务 3
function c1(response) { // 回调 1
let p4 = response.json();
return p4;
}
function c2(profile) { // 回调 2
displayIserProfile(profile)
}
所以,上述代码整个过程
// 发送 HTTP 请求, 返回 p1
let p1 = fetch("/api/user/profile")
// 在 p1 上注册 c1,返回 p2
let p2 = p1.then(c1)
// 在 p2 上注册 c2,返回 p3
let p3 = p2.then(c2)
现在,期约
只是返回,却还未兑现,之后
let p1 = fetch("/api/user/profile")
// p1 兑现,调用 c1,c1 返回 p4
// p2 得到解决
let p2 = p1.then(c1)
let p3 = p2.then(c2)
let p1 = fetch("/api/user/profile")
// 解析的对象兑现 p4 和 p2
let p2 = p1.then(c1)
// 以解析的响应体调用 c2
let p3 = p2.then(c2)