Javascript 是否有一种方法可以使用节点Js中的Promise将值传递给数组对象?

Javascript 是否有一种方法可以使用节点Js中的Promise将值传递给数组对象?,javascript,express,shopify,Javascript,Express,Shopify,我正在使用express Js和Shopify API来获取产品并将其保存到阵列中。但是,当我获取所有数据时,我检查列表大小,结果返回0。我在获取数据时一直在打印产品详细信息,没有问题。谁能告诉我发生了什么事?我怎样才能解决这个问题? 这是我的密码: const fetch = require("node-fetch"); const Product = require("./Product"); const client = Client.buildCl

我正在使用express Js和Shopify API来获取产品并将其保存到阵列中。但是,当我获取所有数据时,我检查列表大小,结果返回0。我在获取数据时一直在打印产品详细信息,没有问题。谁能告诉我发生了什么事?我怎样才能解决这个问题? 这是我的密码:

const fetch = require("node-fetch");
const Product = require("./Product");
const client = Client.buildClient(
  {
    domain: "storename.myshopify.com",
    storefrontAccessToken: "token",
  },
  fetch
);
const ProductList = class {
  getProductList() {
    var productList = [];
    client.product.fetchAll().then((products) => {
      products.forEach((product) => {
        const p = new Product(
          product.availableForSale,
          product.createdAt,
          product.description,
          product.id,
          product.images,
          product.options,
          product.productType,
          product.publishedAt,
          product.title,
          product.variants
        );
        p.printProduct();
        productList.push(p);
      });
    });
    console.log("size:" + productList.length);
    return productList;
  }
};

module.exports = ProductList; ```  

问题是您的fetch和
。然后
处理程序正在运行--因此它们在您拥有
控制台后执行。记录
-编辑输出并返回编辑。您有两个选项:

  • 您可以
    返回
    a并
    解析
    结果:

    const fetch=require(“节点提取”);
    常数产品=要求(“/产品”);
    const client=client.buildClient({
    域名:“storename.myshopify.com”,
    storefrontAccessToken:“token”,
    },
    取来
    );
    const ProductList=class{
    getProductList(){
    返回新承诺((解决、拒绝)=>{
    var productList=[];
    client.product.fetchAll().then((产品)=>{
    products.forEach((产品)=>{
    常数p=新产品(
    product.availableForSale,
    product.createdAt,
    产品说明:,
    product.id,
    产品图片,
    产品选项,
    product.productType,
    product.dat,
    产品名称,
    产品变量
    );
    p、 打印产品();
    productList.push(p);
    });
    log(“大小:+productList.length”);
    解析(产品列表);
    });
    }
    }
    };
    module.exports=产品列表;
    
  • 您可以使用来实现相同的结果:

    const fetch=require(“节点提取”);
    常数产品=要求(“/产品”);
    const client=client.buildClient({
    域名:“storename.myshopify.com”,
    storefrontAccessToken:“token”,
    },
    取来
    );
    const ProductList=class{
    异步getProductList(){
    var productList=[];
    const products=await client.product.fetchAll();
    products.forEach((产品)=>{
    常数p=新产品(
    product.availableForSale,
    product.createdAt,
    产品说明:,
    product.id,
    产品图片,
    产品选项,
    product.productType,
    product.dat,
    产品名称,
    产品变量
    );
    p、 打印产品();
    productList.push(p);
    });
    log(“大小:+productList.length”);
    返回产品列表;
    }
    };
    module.exports=产品列表;