C# 无序调用web服务
我有一个java脚本,看起来像C# 无序调用web服务,c#,javascript,web-services,C#,Javascript,Web Services,我有一个java脚本,看起来像 var message2 = ""; Commission.prototype.communityChanged = function() { BT.WebServices.InternalServices.Commission_CheckUnprocessed(function (data) {message2 = data; }, this.callFailed); if (message2 == "0") { alert("
var message2 = "";
Commission.prototype.communityChanged = function() {
BT.WebServices.InternalServices.Commission_CheckUnprocessed(function (data) {message2 = data; }, this.callFailed);
if (message2 == "0") {
alert("0");
}
}
[WebMethod(EnableSession=true)]
public string Commission_CheckUnprocessed() {
return "0";
}
这调用了我的服务器端web服务。很简单
Web服务代码看起来像
var message2 = "";
Commission.prototype.communityChanged = function() {
BT.WebServices.InternalServices.Commission_CheckUnprocessed(function (data) {message2 = data; }, this.callFailed);
if (message2 == "0") {
alert("0");
}
}
[WebMethod(EnableSession=true)]
public string Commission_CheckUnprocessed() {
return "0";
}
问题是javascript代码完成后,会调用web服务。发生故障的因此,我的message2从未被分配正确的值
我需要添加什么才能使其按正确的顺序运行?您的functiondata是一个回调函数,这意味着它将在请求完成时执行。如果您有.NET背景,您可以将其视为事件或委托。这意味着functiondata不是按顺序执行的
我建议您阅读这篇文章,以了解正在发生的事情
据我所知,在BT.WebServices.InternalServices.Commission_CheckUnprocessed中,有一个对您的服务的调用,该方法采用两个参数:success callback和fail callback 因此,如果对Commission_CheckUnprocessed内部服务的调用是未处理的,那么下面的代码将等待它结束。在这种情况下,您的代码是正确的,但不是用户友好的,因为您在请求期间阻塞了UI 如果对服务的调用是异步的,那么您应该在回调中执行任何操作,因此您的代码应该如下所示:
Commission.prototype.communityChanged = function() {
BT.WebServices.InternalServices.Commission_CheckUnprocessed(function (data) {
if (data === "0") {
alert("0");
}
}, this.callFailed);
}
阅读更多关于为什么应该选择异步方式的信息,或者在函数数据{/*您的代码*/}中返回web服务后编写您想要执行的代码