簡體   English   中英

在JavaScript中進行嵌套的Promise調用

[英]Make nested promise call in javascript

我嘗試使用yammer SDK https://c64.assets-yammer.com/assets/platform_js_sdk.js進行異步調用,如下面的代碼。

javascript SDK文檔在這里https://developer.yammer.com/docs/js-sdk

該代碼當前執行的操作是返回一個由50個用戶的個人資料組成的數組。 用戶總數不可預測。

我想要的是:當先前調用中返回的array.length equal to 50 ,即在下一頁中可能會有更多用戶,請使用index++再次調用相同的API URL。

重復此操作,直到沒有更多用戶要獲取為止。

但是如何做到呢?

yam.connect.loginButton('#yammer-login', function (resp) { console.log(resp.authResponse); var index = 1; if (resp.authResponse) { //trigger data process yam.platform.request({ url: "users.json",
method: "GET", data: {
"page": index }, success: function (user) { console.log("The request was successful."); console.log(user.length); }, error: function (user) { console.log("There was an error with the request."); } }); }else{ console.log("error to get access_token"); } });

簡單地通過創建一個getUsers函數和一個全局變量(在本例中,我通過一個立即調用的函數將其范圍限定在內)來控制索引,您可以僅檢查用戶長度是否為50,如果是,請再次運行該函數:

(function() {
    var index = 1;

    var getUsers = function() {
        yam.platform.request({
            url: "users.json",
            method: "GET",
            data: {
                "page": index
            },
            success: function (user) { 
                console.log("The request was successful.");
                console.log(user.length);

                if (user.length === 50) {
                    // There are additonal users - increment index and run the function again
                    index++;

                    getUsers();
                }
            },
            error: function (user) {
                console.log("There was an error with the request.");
            }
        });
    };

    yam.connect.loginButton('#yammer-login', function (resp) {
        console.log(resp.authResponse);

        if (resp.authResponse) {
            //trigger data process
            getUsers();
        } else {
            console.log("error to get access_token");
        }
    });
})();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM