Node.js:单变量,多个承诺

Mag*_*ian 0 javascript node.js promise

我想创建多个promise,我真的不关心这个代码中的种族,只要所有回调都完成了.

所以,我有一个变量,它包含所有数据,让我们说:

export interface IData {
    data1: string[],
    data2: string[],
    data3: string[]
}
Run Code Online (Sandbox Code Playgroud)

那三个是不相关的,我有一个数据提取器..说:

function getData(id: string): Promise<IData> {
    return new Promise((resolve, reject) => {
        var data = new TableFetcher();
        data.get(_id)
        .then((result : IData) => {
            resolve()
        })
    })
}
Run Code Online (Sandbox Code Playgroud)

现在,我想做一些像:

function x(): Promise<IData> {
    return new Promise((resolve,reject) => {
        var data: IData = {
            data1: getData('100'),
            data2: getData('200'),
            data3: getData('300')
        }
        resolve(data)
    })
}
Run Code Online (Sandbox Code Playgroud)

当所有getData promises都完成了.

它不需要链,但所有都可以单独运行,但我需要在完成后返回包含所有异步数据的数组.

我怎样才能做到这一点?

Ber*_*rgi 5

  1. 避免Promise构造函数反模式!
  2. 用于Promise.all承诺一系列承诺的结果:

function getData(id: string): Promise<string[]> {
    return new TableFetcher().get(id);
}
function x(): Promise<IData> {
    return Promise.all([
        getData('100'),
        getData('200'),
        getData('300')
    ]).then(([data1, data2, data3]) => {
        return <IData>{data1, data2, data3};
    });
}
Run Code Online (Sandbox Code Playgroud)