我從我的azure移動服務db獲取數據。在讀取腳本中,我試圖修改響應,如http://msdn.microsoft.com/en-us/library/jj631631.aspx所示。我正在使用結果中找到的跟蹤號碼來使用名爲「ups_node」的節點模塊。我將狀態屬性添加到我的結果中以將包傳遞給客戶端。這一切工作,直到我循環的結果。在繼續循環之前,它不會等待confirmTracking.makeRequest方法完成。因此,如果循環中有一條記錄,則在追蹤請求返回之前它已完成。我不知道如何同步所有內容。暫停foreach循環,以便完成請求並返回值
function read(query, user, request) {
request.execute({
success: function (results) {
results.forEach(function (item) {
var tn = item.trackingnumber;
//below request being made for shipping status given the tracking number
confirmTracking.makeRequest({
customerContext: "Customer Data",
trackingNumber: tn
}, function (data, err) {
if (err) {
console.error(e);
request.respond(500, err);
}
if (data) {
var db = SpahQL.db(data);
var all_desc = db.select(
"/TrackResponse/Shipment/0/Package/0/Activity/0/Status/0/StatusType/0/Description"
);
var resp = {};
try {
var strParse = JSON.stringify(all_desc.value());
resp = JSON.parse(strParse);
} catch (e) {
// An error has occured, handle it, by e.g. logging it
console.log(e);
request.respond(500, e);
}
var status = JSON.stringify(resp);
item.Status = resp[0];
console.log('item.Status = ' + item.Status); // this is being called after the one out side the confirmTracking.makeRequest method.
}
})
//above request is being made for shipping status given the tracking number
console.log('item.Status = ' + item.Status); //this is happening before it is being set in the above confirmTracking.makeRequest method therefore it is undefined
});
request.respond(); //Writes the response
}
});
}