我不明白everyauth 的承诺是什么。
我看到我需要返回一个承诺对象或用户,但什么是everyauth 承诺?
当您有一个执行身份验证但异步执行的函数时,它很有用。您不能直接从该函数返回用户信息(因为您必须等待回调触发),因此您可以返回一个promise。这是一个特殊对象,它充当“占位符”,用于在异步请求完成时最终将填充用户信息的内容。
文档中的示例:
function (session, accessToken, extra, oauthUser) {
var promise = this.Promise();
asyncFindUser( function (err, user) {
if (err) return promise.fail(err);
promise.fulfill(user);
});
return promise;
}
这意味着调用上下文可以继续工作,直到它真正需要该用户信息(并且与此同时,异步请求正在完成);如果用户信息尚不可用,则必须在稍后阶段等待。您可能会将其视为线程创建和加入的一个非常具体的案例。
“ Promise ”是一个通用术语,涵盖了各种语言和上下文中的此类功能:
在计算机科学中,future、promise 和 delay 是指在某些并发编程语言中用于同步的构造。它们描述了一个对象,该对象充当最初未知的结果的代理,通常是因为尚未完成其值的计算。