[英]Javascript assigning the return value of a Callback function to global variable
[英]How to know when the new value is assigned to global variable in callback function (JavaScript)
是否有什么技巧可以知道何时将新值分配给JavaScript的回调函数中的全局变量。 正如我在此处阅读的那样,它是异步的,因此JavaScript不会等到收到响应。 我需要Java代码中的新值,该Java代码在html页面中运行JavaScript代码。
没有技巧,因为您不能以尝试编写代码的方式编写代码。 您不想将数据放入全局变量,然后尝试神奇地发现数据何时存在。 那不是编写异步代码的好方法。
相反,您需要将使用异步调用结果的代码放在实际的回调本身中,或者从回调中调用某些函数并将其传递给数据。
您没有显示实际的代码,但这是使用jQuery Ajax的示例(仅出于示例目的,您可以使用任何代码或库来执行此操作):
$.ajax({
type: "POST",
url: "some.php",
data: { name: "John", location: "Boston" },
success: function(data) {
// the results of the ajax call are here in the data argument
// to this callback function
// you can either use the data here (write any code here that needs to use it)
// or you can call some other function and pass it the data
}
});
需要访问该变量的代码必须在回调内; 否则,该变量尚未被赋值。
因此,您需要从回调中触发Java代码。 很难在没有更多信息的情况下提供答案。
var callbackFunction = function(arg, callback) {
if ('an error') {
callback(new Error('error text'));
}
else {
// set the global variable
callback(null, 'result');
}
};
var callingFunction = function() {
callbackFunction('arg', function(err, result) {
if (!err) {
// Global variable is set
// Trigger call to Java
}
});
};
您可以将全局变量定义为对象实例:
var globalVar = {
_val: null,
changed: function () {
alert(1);
},
setValue: function(val) {
_val = val; this.changed();
},
getValue: function() {
return _val;
}
};
使用setValue和getValue设置并获取ur全局变量的值:
globalVar.setValue(45); // will set the value and throw an alert box.
globalVar.getValue(); // will return 45
因此,您可以使用自己的函数初始化“更改”的道具,如果调用“ setValue”,它将被触发
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.