繁体   English   中英

如何开始在$ .get()函数外部使用变量?

[英]How can I start using variable outside $.get() function?

var userIdD = $.get('http://someurl.com/options.php', function(abc) {
  var abc = $(abc);
  var link = $(abc).find('a:contains(View My Profile)');
  //console.log (link);
  var userID = $(link).attr('href');
  var userId = $(userID);
  console.log(userId);
  console.log(userID);
});

console.log(userIdD);
console.log(userId);

我无法在函数“ abc”之外开始使用变量“ userIdD”和“ userId”。 在它里面,它工作得很好。 有人可以帮我在室外使用它们吗? 我哪里错了?

在函数外声明变量:

var userID, userId;
var userIdD = $.get('http://someurl.com/options.php', function(abc) {
    var abc = $(abc)
    var link = $(abc).find('a:contains(View My Profile)')
    //console.log (link)
    userID = $(link).attr('href');
    userId = $(userID)
    console.log(userId)
    console.log(userID)
})
console.log(userIdD)
console.log(userId)

问题在于userIdD异步设置的。 函数调用内发生的事情发生在函数调用外发生的事情之后

这是一个可以运行的简化示例:

 $.get('http://jsonplaceholder.typicode.com', function(){ alert('Stuff inside function happening'); }); alert('Stuff outside function happening'); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

现在,如果我们看一下您的代码,我们将看到您正在尝试在函数调用设置的console.log变量。

要绕开异步性,您可以使用Promise。 让我们看看它是如何工作的...

 var valuesPromise = $.get('http://jsonplaceholder.typicode.com').then(function(serverResponse){ return { objectId: 123 }; // return stuff you want to use later }); // later in your code, you can make use of the returned value... valuesPromise.then(function(returnedValue){ alert(returnedValue.objectId); // alerts '123' }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM