【问题标题】:shopify-api-node: promise not returning valueshopify-api-node:承诺不返回值
【发布时间】:2018-11-02 21:53:45
【问题描述】:

设置 node.js 应用程序以从 shopify 检索订单信息。我正在尝试存储该数据并运行一些逻辑,但我似乎无法掌握它。


这有效:

shopify.order.list()
.then(function(orders){
    console.log(orders);
  });

这不起作用:

var orders_json;
shopify.order.list()
    .then(function(orders){
        orders_json=orders;
          //console.log(orders);
      });

console.log(orders_json); //returns undefined

【问题讨论】:

  • 您必须在 .then 函数内部使用 orders,因为 shopify.orders.list 是异步的。提升变量不是那样工作的。你能举一个更好的例子来说明你正在尝试做什么吗?这将有助于更好地确定您是否需要另一个承诺、回调或可以使用 async/await。
  • @MaxBaldwin 是的,我只想将“订单”中的内容分配给全局变量,然后筛选信息以分隔各个订单。

标签: node.js api express shopify shopify-app


【解决方案1】:

让我向您介绍async/await 的世界。只要您将您的函数声明为async 并且您正在“等待”的函数返回一个承诺,您就可以以更同步的方式处理它。查看上面链接的文档。请注意我在声明后如何调用异步函数。不能在异步函数范围之外调用 await。

async function fetchOrders() {
  try {
    const orders_json = await shopify.order.list();
    // do stuff with orders_json

    return orders_json;
  } catch(err) {
    // handle err
  }
}

const orders = fetchOrders();

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 2015-10-30
    • 1970-01-01
    • 2021-05-04
    • 2016-10-11
    • 2016-06-15
    • 2018-04-10
    • 1970-01-01
    相关资源
    最近更新 更多