【发布时间】:2020-08-27 09:34:01
【问题描述】:
我有一个标签框,很像这个网站的标签框,用于标记问题。
提交表单后,JSON 响应允许我向用户显示一个对话框。在这个响应的情况下,对话框有一些额外的数据,一个 frontendupdate(填充了要更新的字段和值)结构。
tags.getData() 发送 JSON 请求以重新填充标签框的选项。
然后 tags.findBy() 允许我指定标签数据的“列”并匹配一个值。我试图在提交 getData 后让 findBy 触发。我知道如何使用回调来做到这一点,但 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);
});
}
}
【问题讨论】:
-
您说在组织数据之前,那个组织是做什么的?在您的承诺中返回
resolve()之前,您似乎错过了那张支票 -
当你执行 console.log(tags.getData()) 时,你会得到输出作为承诺吗?
-
这应该是
tags.getData().then(data=> tags.findBy...你完全忽略了这里异步的请求 -
@FrankFajardo
tags.getData发送一些 ajax 请求,然后将结果排序到一个数组容器中。我的错误是认为tags.getData会在解决之前完成。谢谢。
标签: javascript ajax promise