如何解决我在用Javascript Promise挣扎
我有一个标记框,非常类似于该网站的标记问题标签框。
提交表单后,JSON响应使我可以向用户显示一个对话框。对于这种响应,对话框中包含一些额外的数据,即frontendupdate(填充有要更新的字段和值)结构。
tags.getData()发送JSON请求以重新填充标签框的选项。
然后tags.findBy()允许我指定标签数据的“列”并为其匹配一个值。我试图让findBy在提交getData之后触发。我知道如何使用回调来做到这一点,但是Promise在这里似乎更好。
不幸的是,then()
似乎在Promise之后,数据整理之前立即触发,我真的不明白为什么。
我尝试了几种变体,但显然我做错了。
function(dlg) {
var id = +dlg.EXTRA.FRONTENDUPDATE.PlaceID;
var tags = $('.tags-pTitle').data("tagsbox");
if ($("#PlaceID").val() != id && id > 0) {
var goal = function() {
return new Promise(function resolve() {
tags.getData();
resolve();
});
};
goal().then(function() {
tags.findBy('PLACEID',id);
});
}
}
解决方法
如果tags.getData()返回一个promise,您可以像这样直接链接
function(dlg) {
var id = +dlg.EXTRA.FRONTENDUPDATE.PlaceID;
var tags = $('.tags-pTitle').data("tagsbox");
if ($("#PlaceID").val() != id && id > 0) {
tags.getData().then(function() {
tags.findBy('PLACEID',id);
});
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。