javascript - 在 javascript 中进行嵌套的 Promise 调用

标签 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",<br/> method: "GET", data: {<br/> "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 函数和一个全局变量(在本例中,我通过 immediately-invoked function 来确定范围)来控制索引,您只需检查用户长度是否为 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");
        }
    });
})();

关于javascript - 在 javascript 中进行嵌套的 Promise 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34877594/

相关文章:

javascript - 将 javascript 变量附加到 href 文件夹路径

php - 知道如何实现吗?

javascript - 使用 ASP.NET 的 OnFocus OnBlur

Javascript/Jquery 发布和获取?

javascript - Reactjs:警告:组件正在更改受控

javascript - 从除当前元素之外的所有相同元素中删除数据属性

javascript - 获取使用序列化动态检查输入复选框的所有最近字段的值

javascript - 每次单击链接时如何触发事件(使用 JQuery)?

javascript - 使表格单元格在单击时可编辑

javascript - Angular 6 Typescript从数组中提取元素并进行比较