javascript - Await 在方法 javascript 中不起作用
问题描述
我有一个返回一些数据的 ajax 调用。代码是:
function ProductCodeLookUp() {
return $.ajax({
url: "/ProductInventory/GetProductCodeHirerchy",
type: "get", //send it through get method
async: false,
data: {
productCode: $('#ProductCodeText_Id').val()
},
success: function (response) {
debugger;
if (response != null && (response.tissueClassificationType != null || response.tissueClassificationType != null)) {
$('#productCodeTable_id').show();
$('#ProductCodeNotExistsWarning_id').hide();
//addOptionsToSelect(response, 'size_id', $('input[id=size_id]').val());
$('#ProductCodeTextClassification_Id').text(response.tissueClassificationType);
$('#ProductCodeTextTissueType_Id').text(response.tissueType);
$('#ProductCodeTextProduct_Id').text(response.tissueDefinition);
$('#ProductCodeTextSize_Id').text(response.tissueDefinitionSize);
}
else {
$('#ProductCodeNotExistsWarning_id').show();
$('#productCodeTable_id').hide();
}
},
error: function (xhr) {
//Do Something to handle error
}
});
}
我必须根据这个 Ajax 调用返回的数据做出一些决定。我调用ProductCodeLookUp()
方法的方法是:
async function checkRequiredFields() {
var isValid = false;
if (checkRequiredFieldsSubMethod() == true) {
if (AddProductInBulk() == true) {
if (QualityChecksValidation() == true) {
debugger;
var res = await ProductCodeLookUp();
if (res.tissueDefinitionSize != null)
isValid = true;
else
isValid = false;
}
}
}
debugger;
return isValid;
}
问题是它不等待该ProductCodeLookUp()
方法。我必须等待这个方法的结果,并根据结果来决定是返回真还是假。但我无法做到这一点。可能是什么问题。
解决方案
将 ajax 调用包装在一个 Promise 中,该 Promise 解决成功并拒绝错误。
function ProductCodeLookUp() {
return new Promise((resolve, reject) => $.ajax({
// ...
success: function (response) {
// ...
resolve();
},
error: function (response, status, err) {
// ...
reject(err);
}
}));
}
另外,设置async
为真
推荐阅读
- jquery - 当前框的阴影显示
- android - 将 Kotlin 版本设置为 1.4.32 会在我的 Compose 项目中创建语法错误
- python - 将 MinMaxScaled 预测和目标与重新缩放的预测和目标进行比较时的相对误差差异
- python - 首先从进程中获取 PID
- django - Django 连接游标范围
- facebook - Facebook Conversion API - 不接收事件
- javascript - 静态鼠标不会主动悬停在旋转立方体上(相对面)
- github - Github Action 无法评论 PR
- vba - 参考 VBA 中缺少 MSCommLib.TWD
- linux - 将项目文件夹从 Windows 移动到 linux 时修复依赖关系树