繁体   English   中英

数据来自另一个调用后,在Node.js服务器中解决Promise?

[英]Resolving promise in nodejs server after data comes from another call?

我在节点服务器中有一些承诺,在它们全部解决后,服务器会将其呈现给客户端。 我正在使用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在resolvedData是undefined ,似乎之前,我进入我得到解决sortData功能。 return resolve(sortData...最终不会将其返回值提供给最终的.then吗?

我该如何真正做到这一点,以便myPromise在将数据发送到sortData之后可以解析?

下面的代码工作正常。 假设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)) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM