javascript - 即使 ajax 调用是同步的,函数也会运行异步
问题描述
如果某个 id 将是可见的,我有一个调用的函数。此函数调用我已将 async 设置为 false 的 jQuery AJAX 调用。我在控制台日志中收到不推荐使用的警告,这告诉我这是一个同步调用。我传回了回调函数,但它并没有等待我的回调完成,然后才运行下面示例中的控制台日志。关于为什么我的调用同步调用的函数是异步运行的想法?不幸的是,我不能在我的代码中使用任何 ES6 或 ES7 方法。
if (fsReturned[0].id === 'the-id') {
// sync call with callback
keyCheck('key', function (resObj) {
console.log('precheck active key = ' + resObj.activeKey);
if (elResponse.activeKey === '1') {
fsReturned = $('#id');
} else {
fsReturned = $('#id').next();
}
});
console.log('This runs before my callback function finishes');
}
function sendSyncRequest(requestData, url, successFunction, authKey, method) {
header = {
"Authorization": "Bearer " + authKey,
"Content-Type": "application/json"
}
requestParameters = {
url: url,
method: method,
crossDomain: true,
headers: header,
async: false,
data: JSON.stringify(requestData)
}
$.ajax(requestParameters).then(
function (response, statusText, xhr) {
// successful calls
successFunction(response);
},
function (xhr) {
// api failures
successFunction(null);
});
}
function keyCheck(elValue, callback) {
var url = 'url',
stageKey = 'key',
requestData = {
activity: 'something',
el: elValue
};
successFunction = function (response) {
// processed response and created elResObj object
var processed = JSON.parse(response);
var elResObj = {
activeKey: processed.activeKey,
};
return callback(elResObj);
};
sendSyncRequest(requestData, url, successFunction, stageKey, 'POST');
};
在继续执行其余代码之前,我需要使用从同步调用中获得的数据更新全局变量“fsReturned”。
非常感谢任何帮助。谢谢!
解决方案
推荐阅读
- r - 不明白为什么 dplyr 中的填充函数在调用时显示包含该对象的数据集时说该对象不存在
- tinymce - 有没有办法在 Symfony 5.1 中集成 TinyMCE 和 EasyAdmin 3.x Bundle
- javascript - 如何使 axios 获取请求同步?
- java - 每当我尝试登录我的应用程序时,就会发生这些 sql 错误 1146。如何解决?
- vue.js - Ionic 5,Vue 3 - 如何在 setup() 中使用 Ionic 生命周期挂钩?
- python - 合并子串
- python - 如何在列表中保存多个 random.choice 生成的“数据”并打印出来
- python - 如何在 Flask 中访问函数的返回变量
- r - 在 R Shiny 中将 selectInput 重置为 NULL
- javascript - 正则表达式在调试器中工作,但不在 JavaScript 中