我尝试使用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/