我有以下的函数来检查用户的会话以查看他们是否是员工。现在,我知道有更好的方法来做这件事,但我正在尝试制作一个与论坛软件相关联的简单应用程序。
function isStaff(callback) {
$.ajax({
url: url
}).done(function(data) {
var session = $.parseJSON(data);
if (session.is_staff === 1) {
callback(true);
} else {
callback(false);
}
});
}
假设我在编译“帖子”(Handlebars)时,使用这个函数就像这样:
Let's say I'm using this function in, like so, when compiling a "post" (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;
}
问题在于检查用户是否是员工的请求在函数执行之后才完成,这会导致问题。
我知道 Promise 是 async: false 的替代方案,其中请求发出并在函数完成之前收到响应。
但我不知道如何将其转换为 Promise。我尝试学习,但我卡在概念上了。有人能向我解释一下吗?谢谢。