【发布时间】:2019-12-27 03:20:17
【问题描述】:
我有以下功能来检查用户会话以查看他们是否是员工。现在,我知道有更好的方法可以做到这一点,但我正在尝试制作一个与论坛软件绑定的简单应用程序。
function isStaff(callback) {
$.ajax({
url: url
}).done(function(data) {
var session = $.parseJSON(data);
if (session.is_staff === 1) {
callback(true);
} else {
callback(false);
}
});
}
假设我在编译“帖子”(Handlebars)时使用了这个函数。
function compilePost(post) {
var source = $('#feed-item-template').html();
var template = Handlebars.compile(source);
var context = {
id: post.id,
content: post.text,
author: post.author,
date: $.timeago(post.date),
staff: function() {
isStaff(function(response) {
return response;
});
}
}
var html= template(context);
return html;
}
这里的问题是,检查用户是否为员工的请求直到函数运行后才完成请求。
我知道 Promises 是 async: false 的替代方案,其中发出请求并在函数完成之前返回响应。
但我不知道如何将其转换为承诺。我试图学习它,但我坚持这个概念。谁可以给我解释一下这个?谢谢。
【问题讨论】:
标签: javascript jquery promise