我有一个看起来像
的java脚本var message2 = "";
Commission.prototype.communityChanged = function() {
BT.WebServices.InternalServices.Commission_CheckUnprocessed(function (data) {message2 = data; }, this.callFailed);
if (message2 == "0") {
alert("0");
}
}
调用我的服务器端Web服务。非常直截了当。
Web服务代码看起来像
[WebMethod(EnableSession=true)]
public string Commission_CheckUnprocessed() {
return "0";
}
问题是javascript代码完成,然后调用Web服务。故障。所以我的message2永远不会被分配正确的值。
我需要添加什么才能使其以正确的顺序运行?
答案 0 :(得分:0)
您的function(data)
是一个回调函数,这意味着它将在请求完成时执行。如果您有.NET背景,您可以将其视为事件或委托。这意味着function(data)
并不意味着按顺序执行。
我建议您阅读本文以了解正在发生的事情
http://www.impressivewebs.com/callback-functions-javascript/
答案 1 :(得分:0)
据我所知,在 BT.WebServices.InternalServices.Commission_CheckUnprocessed 中,有一个对您的服务的调用,此方法需要2个参数:success-callback和fail-callback。
因此,如果 Commission_CheckUnprocessed 内的服务调用是synchronous,那么它下面的代码将一直等到它结束。在这种情况下,您的代码是正确的,但在请求时阻止UI时不是用户友好的。
如果对服务的调用是异步的,那么你应该在回调中执行任何操作,所以你的代码应该是这样的:
Commission.prototype.communityChanged = function() {
BT.WebServices.InternalServices.Commission_CheckUnprocessed(function (data) {
if (data === "0") {
alert("0");
}
}, this.callFailed);
}
的原因