gpt4 book ai didi

javascript - 从另一个文件访问函数的返回值

转载 作者:行者123 更新时间:2023-11-30 13:15:38 24 4
gpt4 key购买 nike

我有一个 js 文件,代码如下:

function postResponse(url1,param1)
{
var url = intranetUrl + encodeURI(url1);

var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.onload = function(e)
{
if (this.status == 200)
{
genericRes = this.responseText;
console.log("inside fun:"+genericRes);
return genericRes;
}
alert("!!!"+this.status);
};

xhr.send(param1);


}

现在我想从另一个文件访问这个函数,我在这个文件中导入了上面的文件并将函数调用为:

<script type="text/javascript">

var resss = postResponse("myURL","ACC|^ALL|^M|^|$");
alert("genericRes"+genericRes);
console.log("genericRes>>>"+genericRes);
console.log("resss>>>"+resss);

</script>

但是在这里我得到了未定义的 genericRes 和 resss 值,上面先打印了 console.log 然后打印了 console.log("inside fun:"+genericRes); 在这里我得到了正确的输出,但是从调用代码来看,它给了我未定义的。

在 java 中,我们编写了 suppose 方法,它可以返回 String 为:

public String myMethod()
{
str = "MyString";
return str;
}

并将该方法称为:

String str1 = myMethod();

但是如何在 jquery 中做到这一点呢?

任何建议将不胜感激。提前致谢

最佳答案

如果你仔细看,你正在定义另一个函数,如下所示:

function(e) //<-- this is the another function
{
if (this.status == 200)
{
var genericRes = this.responseText;
console.log("inside fun:"+genericRes);
return genericRes; //<-- this only applies to this function
}
alert("!!!"+this.status);
};

所以它会将那个值返回给xhr.onload的调用者,也就是浏览器,浏览器不会对返回值做任何事情。

此外,您不能真正从异步操作中返回,您必须使用回调。

所以:

function postResponse(url1, param1, callback) { // <-- take a callback parameter
var url = intranetUrl + encodeURI(url1);
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.onload = function(e) {
if (this.status == 200) {
var genericRes = this.responseText;
callback( genericRes ); // <-- call the callback
}
};
xhr.send(param1);
}

然后在你的代码中:

postResponse("myURL", "ACC|^ALL|^M|^|$", function(result) {
alert(result); //Result is only available here. In this anonymous function defined inline. Yes.
});

关于javascript - 从另一个文件访问函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12120906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com