javascript - 如何在进一步执行代码之前等待 ajax 响应?
问题描述
我有下一个函数返回 AJAX 响应或默认false
值:
function getResults() {
// get json object from the database
var json = false // default value
var data = new FormData()
var xhr = new XMLHttpRequest()
xhr.open('POST', "php/get_survey_results.php", true)
xhr.onload = function(){
var jsonString = this.responseText
json = JSON.parse(decodeURIComponent(jsonString))
return json
};
xhr.send(data);
return json
}
function foo() {
var data = getResults() // returns false, because AJAX responce gets later
// processing data...
}
AJAX 响应将在 +- 300 毫秒后出现,这就是getResults
返回 false 的原因。我希望它等到 AJAX 响应将被获取或等待几秒钟,然后再返回 false,如果不是结果获取。我该怎么做?
我需要默认值,因为如果我删除它 - 下一个代码foo
将被执行,但data
变量将为空
解决方案
推荐阅读
- dependency-injection - Nest 无法解析 UserService (?, +) 的依赖关系。请确保索引 [0] 处的参数在当前上下文中可用
- ios - WKWebView 无法从沙箱加载 CSS 或 JS 或图像?
- html - html中的哪个标签
是? - python - Python正则表达式返回括号内字符串的位置
- java - 在这种情况下,当我尝试运行单个测试用例脚本时,为什么会打开多个浏览器实例?
- spring - 在 Spring Integration 中获取带有原始标题和附件的电子邮件
- c# - Excel:下载文件 LoadTestExcelAddIn.vsto 未成功
- c++ - 如何在 Code::blocks c++ 中使用 shell 命令?
- lldb - 使用 lldb 在主二进制文件中查找名为 '_OBJC_IVAR__$_DIRect._width' 的非外部符号?
- reactjs - 使用 React Router 处理多个路由