0
我想弄清楚處理這種情況的最佳方法。基本上我想流動以這樣工作:PubSub.js多訂閱,或不同的方式來處理等待多個回調
1)從服務器(異步獲取配置數據)
2.)執行命令doStuff配置數據被接收(異步)
3()之後。 )在doStuff()完成後運行postResults
目前我似乎有使用PubSub.js這個流程工作,但我想弄清楚如何從配置數據(#1)提供結果postResults(#3 )。雖然我似乎有流動與PubSub的工作,我不知道如何訪問從postResults配置(#1)回調數據(#3)
下面是一個代碼摘要:
PubSub.subscribe('config', doStuff());
fetchConfigurations();
function fetchConfigurations() {
var req = new XMLHttpRequest();
var url = CONFIGURATION_SERVER_URL;
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
var configObject = eval('(' + req.responseText + ')');
PubSub.publish('config', configObject);
} else {
console.log("Requesting config from server: " + url);
}
}
req.open("GET", url, true);
req.send(null);
}
function doStuff() {
PubSub.subscribe('results', postResults);
var results = {};
// do some async work...
results['test1'] = "some message";
results['test2'] = "another message";
PubSub.publish('doStuff', results);
}
function postResults (doStuffId, doStuffData) {
var req = new XMLHttpRequest();
var url = TEST_RESULTS_URL; // I want to get this from the configObject is get in fetchConfigurations
req.open("POST",url,true);
req.setRequestHeader("Content-type","application/x-www-form-urlencoded");
req.send(doStuffData['test1'] + doStuffData['test2']);
}