在数据来自另一个调用后解析nodejs服务器中的承诺?

时间:2017-09-20 20:13:27

标签: javascript node.js reactjs

我的节点服务器中有一些承诺,它们都解析了服务器呈现给客户端。我正在使用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可以解决这个问题吗?

1 个答案:

答案 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))