javascript - ajax请求后变量不更新
问题描述
我有下面的代码,它位于 Vue 脚本中。
user_id = 100; //sample data
$.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
type: "GET",
url: '/user',
success: function (user) {
user_id = user.user_id;
console.log(user_id); //returns 1
},
error: function (result) {
}
});
console.log(user_id); //returns 100 not 1
我希望能够存储由 ajax 请求产生的值为 1。但是,当我在脚本末尾 console.log 时,它返回 100 而不是 1。我认为我需要使用 promise/callback解决这个问题,但我不确定我需要做什么/做什么。有人能帮我吗?
解决方案
这就是您一般可以承诺回调的方式:
let doXWithCallback = callback => {
// do x...
callback();
};
let doXPromisified = () => new Promise(doXWithCallback);
doXWithCallback(() => console.log('do x with callback'));
doXPromisified().then(() => console.log('do x promisified'));
具体为您的示例:
let doRequest = () =>
new Promise((resolve, reject) =>
$.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
type: "GET",
url: '/user',
success: user => resolve(user.user_id),
error: reject(),
}));
doRequest.then(userId => console.log('userId is', userId));
推荐阅读
- go - 通过中间件取消
- java - 配置问题:找不到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/data/mongo]
- python - 用于 Windows 和 Cgo 的 Python-Dev
- google-chrome - 让 Chrome 接受自签名的本地主机证书,说证书被撤销
- amazon-web-services - 带有 DynamoDB 和 Graal 的 Micronaut 无服务器应用程序 java.lang.NoClassDefFoundError:无法初始化类 com.amazonaws.ClientConfiguration
- python-3.x - Pytest/xdist 中的序列化问题
- python - Python整合输入输出
- java - 当我尝试在 java 数组中使用模板时出现 ArrayStoreException
- c++ - 如何在 C++ 上设置目录并运行文件?
- azure-devops - 如何使 Kubernetes 的部署映像与 Devops 库或 variables.tf 保持同步?