我知道在javascript中从return
获取webmethods
数据时此代码有效,但是如果它是从另一个js方法返回的呢?
alert
永远不会运行,所以我想不,但我想确保它是这个而不是其他代码抛出错误:
function previousWinner() {
//Webservice call
services.isUserAWinner(ID, events, function (response) {
//Code
//Return
return true;
}
//Return
return false;
});
}
稍后在我的代码中我称之为
previousWinner(function (response) {
alert(response);
//Check to see if user is a winner
if (!response) {
//Check likes
hasUserLiked();
}
});
previousWinner(function (response) {
仅适用于网络方法调用吗?
答案 0 :(得分:0)
第二个示例是将引用传递给函数本身而不是结果。如果你想内联调用它,你可以这样做:
previousWinner((function (response) {
alert(response);
//Check to see if user is a winner
if (!response) {
//Check likes
hasUserLiked();
}
})());
编辑:在“webmethods”的情况下,我假设你的意思是AJAX调用,你传递的函数的引用在请求返回时用作回调函数。这就是使它异步的原因(AJAX中的A)。
答案 1 :(得分:0)
这就是你应该如何定义previousWinner,其中'code'是一个告诉你运行回调的布尔值。
function previousWinner(callback) {
//Webservice call
services.isUserAWinner(ID, events, function (response) {
//Code
var code = response == true; // if response is a boolean this will work, otherwise you need to run some other type of conditional
if (code && callback) {
callback(response);
//Return
return true;
}
//Return
return false;
});
}
答案 2 :(得分:0)
previousWinner
定义,该函数不带参数,因此任何一个调用都是等价的:
previousWinner();
previousWinner(1);
previousWinner(1,2,3,4,5,6);
previousWinner(function(){},function(){});
// and so on
在第二个示例中,您似乎希望提供回调作为参数 如果是这种情况,您应该考虑将功能重新定义为:
function previousWinner(callback) {
//Webservice call
services.isUserAWinner(ID, events, function (response) {
//Code
if(typeof callback == 'function')
callback(response);
//return whatever you want
});
}