【发布时间】:2019-08-25 10:02:12
【问题描述】:
我最近在一本书中看到了这种模式-> 如果我返回一个 Promise 以及它的回调,函数返回的值(数据类型)是什么:
function combineValues(p1,p1){
return Promise.all([p1,p2])
.then((d) => {
return transformData(d);
}
}
上面的combineValues函数的返回值怎么可能是一个promise??我们已经在要返回的内容的末尾添加了一个 .then。
然而 - 在这段代码下面是写的
let p1 = fetch('url1'), p2 = fetch('url2');
combineValues(p1,p2)
.then(v => console.log(`combined value is ${v}`))
如果第一个代码 sn-p 只返回 - Promise.all([p1,p2]) - 那么第二个代码 sn-p 是可以理解的 - 但它正在返回
Promise.all([p1,p2]).then(something)
【问题讨论】:
-
.then返回一个 Promise ... 这就是 Promise 链接的全部意义 - 因为 没有什么可以将异步变为同步 - 甚至量子计算也不行 - 顺便说一下,你的第一个代码 sn-p 将transformData(d)的结果作为承诺返回 -
documentation - 请注意,根据 documentation,.then 可能的每个返回值都是一个承诺
-
知道了——所以 then 回调就像一个 promise 转换函数——但仍然是一个 promise——知道了!!
-
我不知道
a promise transform function是什么,但.thenreturns a Promise 就是您需要知道的全部内容:p -
这是一个词 - 我只是链接在一起 - 就像一个函数来获取一个 promise 的解析值并将其转换为其他值
标签: javascript promise