我有一个名为时返回输出到一个承诺函数的函数。
我有一个executeScript方法,其动态处理JavaScript方法,并返回一个承诺,什么这些方法返回。
基骨架
Ref.executeScript({
code: "getData(); function getData(){ var res = 'Hello'; return res;}",
function(results){
console.log(results); ////THIS RETURNS "Hello"
});
当代码直接返回变量它的工作原理。例如,下面的返回时执行你好。
getData();
function getData(){
var res = "Hello";
return res;
}
但是,如果我回到它的单击事件中,它返回按钮点击之前的值“你好”,而不是“Hello2”。我想“Hello2”将被返回。
getData();
function getData(){
var res = "Hello";
jQuery("#myButton").on('click', function(){
res = "Hello2";
alert(res); //this gets called
});
return res;
}
更新了原来的问题,提供更清晰
当然,它仍然会返回“你好”,因为当你调用该函数不上点击功能输入。你的功能确实是设置为Click事件的行动,但也不会调用它。在点击事件功能,你真的不能返回一个值,我无法想象,你会需要它。您可以使用范围外变量这样的尝试,但我不建议这样做:
var hasBeenClicked = false;
jQuery("myButton").on('click', function(){
hasBeenClicked = true;
});
function buttonWasClicked() {
var res = hasBeenClicked;
hasBeenClicked = false;
return res;
});
我想你想的单击事件更新的价值这一点,你必须使用JavaScript原型试试这个
function GetData(){
this.res = "Hello";
}
jQuery("#myButton").on('click', function(){
GetData.prototype.res = "Hello2";
alert(res); //this gets called
});
getData = new GetData();
console.log (getData.res)
你应该写这样的事情:
var res = '';
function getData(){
res = "Hello";
return res;
}
$(document).ready(function() {
$("#myButton").click(function(e){
e.preventDefault(); //if you have form to submit
res = "Hello2";
});
});