在 javascript 中进行嵌套承诺调用
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");
}
});
})();
- 嵌套承诺会产生类似的效果
- 如何展平嵌套承诺依赖项
- 嵌套承诺
- 转换嵌套'对于'循环成一个承诺,为了一个承诺?嵌套承诺
- 嵌套承诺与q-io
- 如何将嵌套承诺与Q连锁?我可以'Don’我不能让它们按正确的顺序运行
- 在嵌套承诺链中重新引发异常
- 此代码中嵌套承诺的目的是什么
- 嵌套承诺执行不同步
- AngularJs $q.all 不会用混合的嵌套承诺来解决
- 使用模拟工厂在茉莉花中测试嵌套承诺
- angular.foreach 解析嵌套承诺
- 如何避免用$q嵌套承诺
- 如何返回嵌套承诺的结果
- Keystone.js嵌套承诺 -> foreach -> 列表查找范围问题
- 在 node.js 中返回延迟嵌套承诺
- 在 javascript 中进行嵌套承诺调用
- 嵌套承诺被卡住
- 简化嵌套承诺和循环
- 优化嵌套承诺