下面的 jQuery 代码运行良好。
// Make request.
$.ajax(settings)
.done(function(result) {
requestDidSucced(result);
})
.fail(function(result) {
requestDidFail(result);
})
.always(function(result) {
requestDidFinish(result);
});
但是,将此代码转换为 usetry/catch/finally
并async/await
失败,因为该finally
块无权访问$.ajax()
.
特别是,如果我们result
在try
块外定义,假设result
在finally
块中获取一个值是否像在块中一样安全always
?
// Make request.
try {
let result = await $.ajax(settings);
requestDidSucceed(resultBox, result);
} catch (result) {
requestDidFail(result);
} finally {
requestDidFinish(result); // This fails because `request` is not available.
}
finally
块是否可以访问 AJAX 查询的结果?
result
在try
块外声明:
// Make request.
let result;
try {
result = await $.ajax(settings);
requestDidSucceed(resultBox, result);
} catch (error) {
requestDidFail(error);
} finally {
requestDidFinish(result);
}
但是,您应该注意如何安排。例如,catch
如果requestDidSucceed
抛出错误,该子句也将被调用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句