2012-01-06 10 views
15

私はeveryauthの約束を理解していません。すべての約束は何ですか?

約束のオブジェクトやユーザーを返す必要があることがわかりますが、everyauthの約束は何ですか?

答えて

25

これは、認証を実行するが非同期的に実行する関数を持つ場合に便利です。関数からユーザー情報を直接返すことはできません(コールバックが発生するのを待つ必要があるため)約束を返します。これは、非同期要求が完了したときに最終的にユーザー情報で満たされるものの「プレースホルダー」として機能する特別なオブジェクトです。 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は」言語とコンテクストのすべての種類でこの種の機能をカバーし、一般的な用語です:コンピュータサイエンス、将来、約束で

、およびいくつかの同時での同期のために使用した構築物を参照してください遅らせますプログラミング言語。彼らは、その値の計算がまだ完了していないため、最初は知られていない結果の代理として機能するオブジェクトを記述します。

+0

ありがとうございました。 – rizidoro

+0

@Anonymous Drive-By Downvoter:あなたは私を冗談にしているのですか? –

関連する問題