如何解决jQuery Promise异步在对象中等待
我有一个内部装有许多功能的对象。其中一些是ajax调用。想法是从另一个地方调用此功能之一,等到解决为止,但我不知道是否可能,而且不确定是否要这样做。这是代码,以便您了解我要做什么。
$(document).ready(function(){
$(".button").click(function(){
let some_id = $(this).val();
let ajax_test = binder.firstLayer['ajaxcall'](some_id);
console.log(ajax_test);
});
});
然后我有一个对象,其中包含我使用的所有功能,其中包括这个ajax调用,看起来像这样:
let binder = {
firstLayer : {
ajaxcall: function(some_id){
return new Promise( (resolve,reject) => {
$.ajax({
// all the details
}).then((response) => {
resolve(response);
});
});
}
}
}
我没有包含关键字async和await,因为我不确定将它们放在哪里。对于ajaxcall函数,我尝试将async
放在ajaxcall:
之后和function(some_id)
之前,但是当我像这样放置await
时:
let ajax_test = await binder.firstLayer['ajaxcall'](some_id);
但不起作用。再说一遍,问题是它是否可以尝试做的方式完成,如果可以,做错了什么或放在错误的地方。通过这种尝试,如果我尝试查看响应,则会得到undefined
;如果我只是通过控制台登录[object Promise]
(从以前的位置),则得到console.log(ajax_test);
(来自response
)
解决方法
只要将功能标记为异步,就可以使用let ajax_test = await binder.firstLayer['ajaxcall'](some_id);
:
$(".button").click(async function(){ ...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。