LoginSignup
11
11

More than 5 years have passed since last update.

Facebook API を $.Deferred で管理

Last updated at Posted at 2013-02-05

複数の Facebook API を全部 $.Deferred にする
init とかの部分は略

// ログイン Deferred
var $login = $.Deferred(function ($dfd) {
    FB.login(function (response) {
        if (response.authResponse) {
            $dfd.resolve(response);
        } else {
            $dfd.reject(response);
        }
    });
}).promise();

// FB.api の Deferred ラッパー、可変引数
function fbDfd() {

    var $dfd = $.Deferred(),
        args = [],
        i;

    for (i = 0; i < arguments.length; i++) {
        args[i] = arguments[i];
    }

    args.push(function (response) {
        if (!response || response.error) {
            $dfd.reject(response);
        } else {
            $dfd.resolve(response);
        }
    });

    FB.api.apply(this, args);

    return $dfd.promise();
}

//  ログイン後にAPIを呼び出す。 複数 API も then で連結可能
$login.then(
    function (response) {
        return fbDfd('/me/friends');
    }
).done(function (response) {
    console.log(response); // FB.api のレスポンス
});
11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11