Javascript 异步PUT请求

Javascript 异步PUT请求,javascript,node.js,shopify,Javascript,Node.js,Shopify,我正在构建一个脚本,通过JS通过shopifyapi处理一些数据修改 我的策略是从一个日期提取所有订单,并针对每个订单运行一个函数,然后将新数据放在上面 我已经非常接近了,我有一个数组,其中包含某个特定日期的所有订单。我通过承诺返回这些数据 我需要有关此函数的异步性质的帮助才能按预期工作。目前,我的PUT请求被完全忽略,我不知道为什么。这是我的密码: (function main() { var yesterday = moment().add('-1', 'days').format('Y

我正在构建一个脚本,通过JS通过shopifyapi处理一些数据修改

我的策略是从一个日期提取所有订单,并针对每个订单运行一个函数,然后将新数据放在上面

我已经非常接近了,我有一个数组,其中包含某个特定日期的所有订单。我通过承诺返回这些数据

我需要有关此函数的异步性质的帮助才能按预期工作。目前,我的PUT请求被完全忽略,我不知道为什么。这是我的密码:

(function main() {
  var yesterday = moment().add('-1', 'days').format('YYYY-MM-DD');
  var today = moment().format('YYYY-MM-DD');
  var scopeStart = 'created_at_min=' + yesterday + "%2000:00";
  var scopeEnd = '&created_at_max=' + today + '%2000:00';

  var promise = new Promise(function(resolve, reject) {
    var apiEndpoint = '/admin/orders/count.json?limit=250&status=any&' + scopeStart + scopeEnd;
    Shopify.get(apiEndpoint, function(err, data) {
      if (err) reject(err);
      else resolve(data);
    });
  });

  promise.then(function(data) {
    console.log('promise data', data.count);

    if (data.count <= 250) {
      var secondPromise = new Promise(function(resolve, reject) {
        var apiEndpoint = '/admin/orders.json?limit=250&status=any&' + scopeStart + scopeEnd;
        Shopify.get(apiEndpoint, function(err, data) {
          if (err) reject(err);
          else resolve(data);
        });
      });

      secondPromise.then(function(data) {
        var array = data.orders;
        async.each(array, function(order, callback) {
          console.log(order.name, order.id);
          var thirdPromise = new Promise(function(resolve, reject) {
            var fields = generateFields(order.id);
            console.log('fields', fields);
            console.log('----------------');
            Shopify.put('/admin/orders/' + order.id, fields, function(err, data) {
              if (err) reject(err);
              else resolve(data);
            })
          });

          thirdPromise.then(function(data) {
            console.log('Updated', data);
          });  
        });
      });
    }
  });
}());
(函数main(){
var昨天=时刻()。添加('-1','days')。格式('YYYY-MM-DD');
var today=moment().format('YYYY-MM-DD');
var scopeStart='created_at_min='+昨天+%2000:00;
var scopeEnd='&created_at_max='+today+'%2000:00';
var承诺=新承诺(功能(解决、拒绝){
var apidendpoint='/admin/orders/count.json?limit=250&status=any&'+scopeStart+scopeEnd;
获取(apiEndpoint,函数(err,data){
如果(错误)拒绝(错误);
else解析(数据);
});
});
promise.then(函数(数据){
console.log('promise data',data.count);

如果(data.count)我看不出您在哪里从async.each执行
callback
。第三个承诺似乎也不需要,任何东西都不依赖于它。也就是说,我也看不出第三个承诺没有理由不解决或拒绝。您是否尝试捕获错误?
thirdPromise.catch(err=>console.log(err))
我也得出了这个结论。我怀疑我传递的
字段可能会破坏某些订单,从而导致整个请求失败。看起来这不是代码问题——这是我第一次尝试编写这样的嵌套承诺。他的代码应该可以工作(尽管在不调用callback的情况下永远不要调用第二个put)。我怀疑generateFields()抛出了一个错误。在Promissions站点中,“默认情况下,承诺会使任何未经处理的拒绝都保持沉默。”是的,承诺确实会吞下错误,但它确实允许您使用.catch()处理错误