[英]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.