Javascript 流星的承诺

Javascript 流星的承诺,javascript,meteor,es6-promise,Javascript,Meteor,Es6 Promise,我正在服务器端通过Meteor.methods进行异步调用 我希望我的客户机在尝试运行任何进一步的逻辑之前等待异步响应 我需要帮助了解如何利用异步/承诺处理远程HTTP请求 目前,我有一个非常简单的事件设置: 'click #getOrders': function() { Meteor.call('getOrders', function(err, data) { if (!err) { console.log(data); } })

我正在服务器端通过Meteor.methods进行异步调用

我希望我的客户机在尝试运行任何进一步的逻辑之前等待异步响应

我需要帮助了解如何利用异步/承诺处理远程HTTP请求

目前,我有一个非常简单的事件设置:

  'click #getOrders': function() {
    Meteor.call('getOrders', function(err, data) {
      if (!err) {
        console.log(data);
      }
    })
  }
这就要求:

var shopifyAPI = Meteor.npmRequire('shopify-node-api');
var Shopify = new shopifyAPI({
  shop: 'xxxxx.myshopify.com', 
  shopify_api_key: 'xxxxxx', 
  access_token: 'xxxxx' 
});

Meteor.methods({
  'getOrders': function() {

    var promise = new Promise(function(resolve, reject) {
      Shopify.get('/admin/orders/count.json', function(err, res) {
        if (err) reject(err);
        else resolve(res);
      });
    });

    promise.then(function(data) {
      return data;
    })

  }
})
当我单击我的事件处理程序时,我可以看到我的服务器日志正确地接收数据。在
promise下添加
console.log
。然后
确认promise代码正在工作


但是,我的客户端
console.log始终未定义,因为它在异步响应返回之前返回一个结果。我怎样才能妥善处理这件事呢?

你应该归还承诺

return promise;
返回后,在客户端调用:

data.then(function(data) {
  console.log(data);
});

回报承诺是我所错过的一切。