我有一个foo发出Ajax请求的函数.我怎样才能从中回复foo?
我尝试从success回调中返回值,并将响应分配给函数内部的局部变量并返回该变量,但这些方法都没有实际返回响应.
function foo() {
var result;
$.ajax({
url: '...',
success: function(response) {
result = response;
// return response; // <- I tried that one as well
}
});
return result;
}
var result = foo(); // It always ends up being `undefined`.
Run Code Online (Sandbox Code Playgroud) 鉴于以下示例,为什么outerScopeVar在所有情况下都未定义?
var outerScopeVar;
var img = document.createElement('img');
img.onload = function() {
outerScopeVar = this.width;
};
img.src = 'lolcat.png';
alert(outerScopeVar);
Run Code Online (Sandbox Code Playgroud)
var outerScopeVar;
setTimeout(function() {
outerScopeVar = 'Hello Asynchronous World!';
}, 0);
alert(outerScopeVar);
Run Code Online (Sandbox Code Playgroud)
// Example using some jQuery
var outerScopeVar;
$.post('loldog', function(response) {
outerScopeVar = response;
});
alert(outerScopeVar);
Run Code Online (Sandbox Code Playgroud)
// Node.js example
var outerScopeVar;
fs.readFile('./catdog.html', function(err, data) {
outerScopeVar = data;
});
console.log(outerScopeVar);
Run Code Online (Sandbox Code Playgroud)
// with promises
var outerScopeVar;
myPromise.then(function (response) {
outerScopeVar = response;
});
console.log(outerScopeVar);
Run Code Online (Sandbox Code Playgroud)
// geolocation API
var outerScopeVar; …Run Code Online (Sandbox Code Playgroud) 我正在创建(学习)Google Chrome的扩展程序.
为了调试一些代码,我插入console.log()了如下:
var fourmTabs = new Array();
chrome.tabs.query({}, function (tabs) {
for (var i = 0; i < tabs.length; i++) {
fourmTabs[i] = tabs[i];
}
});
for (var i = 0; i < fourmTabs.length; i++) {
if (fourmTabs[i] != null)
window.console.log(fourmTabs[i].url);
else {
window.console.log("??" + i);
}
}
Run Code Online (Sandbox Code Playgroud)
这是非常简单的代码:将所有选项卡信息放入我自己的数组中,并打印一些东西.
要检查代码是否正常工作,我运行代码.问题出现了:
知道为什么吗?
javascript asynchronous breakpoints google-chrome-extension google-chrome-devtools
我的扩展程序正在修改一些 URL。它工作正常,但现在我想检查设置中是否启用了修改。
chrome.webRequest.onBeforeRequest.addListener
(
modifyUrl,
{urls: ['http://somewebsite/*'], types: ['main_frame']},
['blocking']
);
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何等待该值。我必须在退出之前获取设置modifyUrl。这可能吗?如果这是 C#,我可能会在ManualResetEvent调用sync.get.
function modifyUrl(details)
{
chrome.storage.sync.get("someSetting",
function (data)
{
//I can get the setting here
}
);
//how to know the setting here?
if(enabled in the setting)
{
return {redirectUrl: some different url};
}
}
Run Code Online (Sandbox Code Playgroud)