我的客户端SignalR JavaScript文件中包含此代码:
ticker.client.observationArrived = function (eventData) {
console.log("Enter observationArrived with %o", eventData.time);
var observationId = eventData.observationId;
// Use cascading jquery "done" functions.
// First get observation
ticker.server.getObservation(observationId).done(function (observation) {
console.log("Cascaded from getObservation with %o and %o", eventData.time, observation.ObservationGroupId);
var observationGroupId = observation.ObservationGroupId;
// Next get observation group
ticker.server.getObservationGroup(observationGroupId).done(function(observationGroup) {
console.log("Cascaded from getObservationGroup");
// Add data to HTML table
var newData = {
time: eventData.time,
observationId: eventData.observationId,
observationGroupName: observationGroup.Name
}
$observationTableBody.append(rowTemplate.supplant(newData));
});
});
}
现在我想再往前走一步,采取" ProductId"来自"观察组"并调用" getProduct"获取产品信息以将其中一些添加到我的HTML表格中。但是每个访问级别越来越深,并且没有函数嵌套,我看不到任何方法将例如eventData.observationId传递给通过done
调用的函数。它没有给出一个温暖的模糊。
还有其他一些方法来处理这个问题,比方说,使用某种全局(但本地交易)数据可以让我更干净地分解,并且没有无限深层嵌套的威胁吗? (我知道我可以声明这些方法不合适,但是我们仍然必须静态嵌套。)
或者有没有办法在done
上传递多个参数?我已经看过几个像(entityA, entityB).done(function theFunction(a,b) {...
那样做的例子,但我无法得到类似的东西,而且找不到关于表格的文档。
还是有其他方法可以处理这种一般性的"级联"情况,也许是通过使用事件?
(意识到这使得这是一个"意见"问题)你会考虑什么"最佳实践"这里吗?
答案 0 :(得分:0)
...是一组用于组合异步和基于事件的库 使用可观察集合和Array#extras样式的程序 JavaScript中的组合。
github上有一个JavaScript库版本https://github.com/Reactive-Extensions/RxJS