每个人的承诺是什么?

时间:2012-01-06 16:41:22

标签: node.js express promise everyauth

我不明白每个人所承诺的是什么。

我看到我需要返回一个promise对象或者用户,但是什么是Everyauth承诺?

1 个答案:

答案 0 :(得分:26)

当你有一个执行身份验证的函数但是异步执行身份验证时,它很有用。您无法直接从函数返回用户信息(因为您必须等待回调才能触发),因此您将返回 promise 。这是一个特殊对象,充当异步请求完成时最终将填充用户信息的“占位符”。

来自the documentation的示例:

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”是一个通用术语,涵盖了各种语言和语境中的这种功能:

  

在计算机科学中,未来,承诺和延迟是指在某些并发编程语言中用于同步的构造。它们描述的对象充当最初未知的结果的代理,通常是因为其值的计算尚未完成。