首页 > 解决方案 > shopify-api-node:承诺不返回值

问题描述

设置 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

标签: node.jsapiexpressshopifyshopify-app

解决方案


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

推荐阅读