Javascript函数$.获取won't返回值

javascript function with $.get won't return value

本文关键字:返回值 won 函数 获取 Javascript      更新时间:2023-09-26

我有以下功能:

function parseLink(link){
 var newlink="";
 $.get(link,
   function(data){    
   startoffset = data.indexOf("location.replace") + 18;
   endoffset = data.indexOf("tiny_fold = 1;") - 8;
   newlink= data.substr(startoffset,(endoffset-startoffset));

});
return newlink;
 }

我使用jquery $。get解析一个URL,如果我不使用函数,它会很好地工作,但函数将返回空字符串。显然我做错了什么,但我不知道是什么;如有任何帮助,不胜感激。

您需要传入一个函数,以便在$.get返回时调用。比如:

function parseLink(link, callback) {
   $.get(link,
      function(data) {
         startoffset = data.indexOf("location.replace") + 18;
         endoffset = data.indexOf("tiny_fold = 1;") - 8;
         var newlink= data.substr(startoffset,(endoffset-startoffset));
         callback(newlink);
      });
 }

然后你可以用:

parseLink('foo', function (newlink)
  {
     //Stuff that happens with return value
  }
);

$。Get是异步的。看到的控制流程是这样的:

parseUrl("http://www.test.com")
$.get(..., function callback() { /* this is called asynchronously */ })
return "";
... 
// sometime later the call to $.get will return, manipulate the
// newLink, but the call to parseUrl is long gone before this
callback();

我想你的意思是:

function parseUrl(link, whenDone) {
    $.get(link, function () {
        var newLink = "";
        // Do your stuff ...
        // then instead of return we´re calling the continuation *whenDone*
        whenDone(newLink);
    });
}
// Call it like this:
parseUrl("mylink.com", function (manipulatedLink) { /* ... what I want to do next ... */ });

欢迎来到异步意大利面世界:)

由于.get()异步操作,parseLink()在AJAX调用返回之前继续执行并返回空的newlink

您需要从回调中触发与newlink一起工作的任何东西,这可能需要您重新考虑一下您的实现。接下来会发生什么(然后填充newlink应该发生什么)?