我的节点服务器中有一些承诺,它们都解析了服务器呈现给客户端。我正在使用Promise.all([ ...
,其中包含我所拥有的少数承诺中的所有数据。
我现在需要在我的一个承诺结算之前从另一个电话中获得一些数据。但似乎Promise.all
在我拥有我需要的东西之前仍在解决。
const myPromise = new Promise((resolve) => {
needDataFromThisCall(someInfo)
.then((data) => {
return resolve(sortData(data))
})
.catch((error) => {
//error handle
})
})
.then((resolvedData) => {
return resolvedData;
})
这似乎不起作用,因为最终.then
已解决的数据为undefined
,并且在我进入sortData
函数之前似乎已得到解决。 return resolve(sortData...
是否最终没有将其返回值提供给最终的.then
?
如果我需要将这些数据发送到myPromise
后才能解决这个问题,sortData
可以解决这个问题吗?
答案 0 :(得分:1)
下面的代码工作正常。假设sortData
是同步函数,则需要解析myPromise
以获得结果。
let someInfo = [2,3,1];
let needDataFromThisCall = info => new Promise(res => setTimeout(()=>res(info), 500) );
let sortData = data => data.sort();
const myPromise = new Promise((resolve) => {
needDataFromThisCall(someInfo)
.then((data) => {
return resolve(sortData(data))
})
.catch((error) => {
//error handle
})
})
.then((resolvedData) => {
return resolvedData;
})
myPromise.then(data => console.log('final data', data))