如何解决无法从承诺语法转换为jQuery ajax函数尝试/捕获/最终以及异步/等待吗?
下面的jQuery代码效果很好。
// Make request.
$.ajax(settings)
.done(function(result) {
requestDidSucced(result);
})
.fail(function(result) {
requestDidFail(result);
})
.always(function(result) {
requestDidFinish(result);
});
但是,由于try/catch/finally
块无法访问async/await
的结果,因此无法将此代码转换为使用finally
和$.ajax()
。
尤其是,如果我们在result
块之外定义try
,可以假设result
在finally
块中得到的值就像{ {1}}封锁?
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.
}
块是否可以访问AJAX查询的结果?
解决方法
在result
块之外声明try
:
// Make request.
let result;
try {
result = await $.ajax(settings);
requestDidSucceed(resultBox,result);
} catch (error) {
requestDidFail(error);
} finally {
requestDidFinish(result);
}
但是,您应该谨慎安排。例如。如果catch
抛出错误,则requestDidSucceed
子句也会被调用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。