[英]Node.js: Single variable, multiple promises
我想创建多个Promise,而且只要所有回调都完成了,我真的不在乎这段代码中的竞争。
因此,我有一个变量,其中包含所有数据,比如说:
export interface IData {
data1: string[],
data2: string[],
data3: string[]
}
那三个是无关的,我有一个数据提取器..说:
function getData(id: string): Promise<IData> {
return new Promise((resolve, reject) => {
var data = new TableFetcher();
data.get(_id)
.then((result : IData) => {
resolve()
})
})
}
现在,我想做类似的事情:
function x(): Promise<IData> {
return new Promise((resolve,reject) => {
var data: IData = {
data1: getData('100'),
data2: getData('200'),
data3: getData('300')
}
resolve(data)
})
}
当所有getData承诺都完成时。
它不需要链接,但是所有都可以单独运行,但是完成后,我需要返回一个包含所有异步数据的数组。
我怎样才能做到这一点?
Promise
构造函数反模式 ! 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};
});
}
function x(): Promise<IData> { return new Promise((resolve, reject) => { Promise.all([getData('100'), getData('200'), getData('300')]) .then(result => { var data: IData = { data1: result[0], data2: result[1], data3: result[2] } resolve(data) }) .catch(err => { reject(err) }) }) }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.