正确的方法或方法在循环内设置条件时做
Right way or method Do While If Condition set inside loop?
我找不到正确的方法:
我正在为产品调用外部 API,我收到一个响应,我想将这些产品添加到我的数据库中,如果响应包含 next_page url,请再次循环它,直到没有剩余next_page
这是我想到的:
var products = api.ProductsActive('GET', {includes: 'Images', limit: 1});
requestProducts = function(){
products.results.forEach(function(product){
var sameproduct = apiProducts.findOne({listing_id: product.listing_id});
if (sameproduct) {
console.log('found sameproduct');
return;
}
//Add userId to current product so we can assosicate products belong to "X" user
var productExtend = _.extend(product, {userId: Meteor.userId()});
apiProducts.insert(productExtend);
});
//If there is next page get the next page number and get products
var nextPage = products.pagination.next_page;
if (nextPage !== null) {
products = api.ProductsActive('GET', {includes: 'Images', page: nextPage, limit: 1});
console.log(products);
}
};
//loop at least once, and then if more pages found
do {
requestProducts();
}
while (products.pagination.next_page !== null);
这似乎不起作用,我不确定这是否是此类功能的正确方法,我真的可以帮助您输入!请帮我找出正确的方法!
请记住,javascript是异步的,所以你需要用回调而不是do
来处理你的循环。这样做的原因是requestProducts可能使用回调,并且javascript解释器在运行下一行代码之前不会"等待"requestProducts()
完成运行。
您尚未提供有关 api 如何工作的任何详细信息,因此我必须概括一下。
如果requestProducts()
将参数作为回调(它应该这样做(,请使用该参数重新运行自身:
var callback = function(err, result) {
if(products.pagination.next_page !== null) requestProducts(callback);
};
requestProducts(callback);
您必须检查 API 的文档以检查回调是如何定义的,但如果出现问题,它将类似于上面err
返回回调。
这是如何工作的,当requestProducts被调用时,回调将触发,如果它不是最后一页,则重复自己直到..next_page == null
相关文章:
- 有条件更新d3.js力图中节点的最佳方法
- 在执行另一个异步函数之前,只有当条件为true时,才执行某些异步函数的最佳方法
- 在条件(if)结构的条件语句中是否有定义变量的有效方法
- 为什么不能在带有条件的ng类中使用方法
- 在canjs中,根据任何模型实例的存在,有条件地显示胡子模板部分的最常用方法是什么
- 如何使EXPECT条件等待promise被解析(代码封装在方法中)
- 有没有一种优雅的方法来检查多个条件
- 根据条件从代码隐藏调用 Javascript 方法
- 获取数组中满足 Javascript 条件的第一个元素的高阶方法
- 当数据超过 5k 时,为动手提供条件格式的最佳方法
- 条件变量赋值的最佳方法
- 条件运算符,简化添加后检查结果的方法
- 如何使用 str.search() 或类似方法在 jQuery 中执行条件
- 正确的方法或方法在循环内设置条件时做
- 将过滤条件应用于地图的最干净方法
- 使用 Javascript 检查 2 个互斥条件的最佳方法
- 如何使用getter和setter方法创建一个Angular工厂而不遇到竞争条件
- jquery:如果第一个选择器返回为空,有没有一种简明的方法可以有条件地使用第二个选择器
- 有条件地应用!到JavaScript中的方法
- AngularJS |控制器中条件初始化的更好方法