函数之间的JavaScript承诺';类别';包装纸
我不熟悉承诺,希望解决以下情况: 考虑表示three.js-Scene的主“类”函数函数之间的JavaScript承诺';类别';包装纸,javascript,promise,Javascript,Promise,我不熟悉承诺,希望解决以下情况: 考虑表示three.js-Scene的主“类”函数main(),以及表示要渲染的数据的“子类”函数sub(): Main()有一个调用new的方法addSubDataToObject() Sub()进入Main().data对象({id\u x:data\u from\u url\u x}) Main()有另一种方法renderDataObjects()来呈现数据 (通过three.jsaddToScene()) Sub()通过调用时的方法getData()检
main()
,以及表示要渲染的数据的“子类”函数sub()
:
有一个调用Main()
进入new的方法
Sub()addSubDataToObject()
对象(Main().data
){id\u x:data\u from\u url\u x}
有另一种方法Main()
来呈现数据 (通过three.jsrenderDataObjects()
)addToScene()
通过调用时的方法Sub()
检索远程数据 (使用getData()
调用WebWorker)并将其作为对象返回(XMLHttpRequest
){id:data\u from\u url}
var main = new Main();
我希望能够添加多个数据对象
main.addSubDataToObject(id_1, url_1);
main.addSubDataToObject(id_2, url_2);
打电话
main.renderDataObject();
在所有数据调用完成下载和处理后,将main.data
中的每个对象渲染到场景中。当前,我使用回调在每次调用完成后将每个数据调用添加到场景中
main.addSubDataToObject(id_1, url_1, cb);
main.addSubDataToObject(id_1, url_2, cb);
但是,当然,这会根据有效载荷依次添加它们,并有一个延迟
例如,我想让Main()
的.addSubDataToObject()
将每个承诺返回到承诺数组中,并使用promise.all()
使.renderDataObject()等待在呈现之前解析所有承诺。但是,我不知道如何结合数据对象来实现这一点,也不知道如何处理带有承诺的“类”对象。如果可能的话(对您来说这似乎很实用),我将非常感谢为这个场景提供一个示例结构。如果我理解这个问题,您只想知道如何在类函数中使用承诺?这就是你要找的吗
class Main {
renderDataObject(data) {
/* data will be an array of all resolvedData in the order they were resolved */
}
addSubDataToObject(id, url) {
return new Promise(function(resolve, reject) {
// do work
resolve(/* resolvedData? */);
});
}
}
let main = new Main();
let promises = [];
promises.push(main.addSubDataToObject(id_1, url_1));
promises.push(main.addSubDataToObject(id_2, url_2));
Promise.all(promises).then(main.renderDataObject);
绝对差不多,)我希望将承诺逻辑包装在.renderDataObject()中。这是否像添加Promissions数组作为类变量一样简单,从.addSubDataObject(id,url)(Promissions.push()而不是return?)中填充它,并使用Promission.all(Main.Promissions)在.renderDataObject()中执行。然后(通过数据数组循环)?更新:我测试过了,就这么简单!谢谢你提供了这么多好的信息,让我知道了最后的化妆品变化!