You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在函数中返回Promise结果?amazonMws调用返回undefined求助

解决Amazon MWS products.search返回undefined的问题

嘿,我一眼就看出你遇到的问题了——这是典型的异步回调陷阱!你的listMatchingProducts函数之所以返回undefined,核心原因是你误解了异步代码的执行逻辑。

为什么原来的代码不行?

amazonMws.products.search是一个异步操作(它需要发送网络请求到Amazon服务器),当你调用它的时候,JavaScript不会等着它执行完再继续,而是直接跑完listMatchingProducts的剩余代码,然后返回undefined。而你在回调里写的return res,只是从回调函数里返回,根本不会把结果传递到外部的listMatchingProducts函数中。

两种可行的解决方案

方案1:改用Promise + async/await(推荐,代码更清晰)

把你的函数改成返回一个Promise,这样就能用现代的异步语法来处理结果:

function listMatchingProducts(query) { 
  // 返回一个Promise对象
  return new Promise((resolve, reject) => {
    const options = { 
      Version: VERSION, 
      Action: 'ListMatchingProducts', 
      MarketplaceId: MARKET_PLACE_ID, 
      SellerId: SELLER_ID, 
      Query: query 
    } 
    amazonMws.products.search(options, (err, res) => { 
      if(err){ 
        // 出错时reject错误
        reject(err);
        return; 
      } 
      // 成功时resolve结果
      resolve(res); 
    }) 
  });
}

// 调用示例(必须在async函数里使用await)
async function fetchProducts() {
  try {
    const productResults = await listMatchingProducts("你的查询关键词");
    console.log("拿到的产品数据:", productResults);
    // 这里可以处理返回的JSON结果了
  } catch (error) {
    console.error("请求出错:", error);
  }
}

// 执行调用
fetchProducts();

方案2:给函数添加回调参数

如果你习惯传统的回调写法,也可以让调用者传入一个回调函数来处理结果:

function listMatchingProducts(query, callback) { 
  const options = { 
    Version: VERSION, 
    Action: 'ListMatchingProducts', 
    MarketplaceId: MARKET_PLACE_ID, 
    SellerId: SELLER_ID, 
    Query: query 
  } 
  amazonMws.products.search(options, (err, res) => { 
    if(err){ 
      // 把错误传给回调
      callback(err, null);
      return 
    } 
    // 把结果传给回调
    callback(null, res); 
  }) 
}

// 调用示例
listMatchingProducts("你的查询关键词", (error, productResults) => {
  if (error) {
    console.error("请求失败:", error);
    return;
  }
  console.log("产品数据:", productResults);
  // 在这里处理返回的JSON
});

只要选其中一种方案修改,你就能正常拿到amazonMws.products.search返回的JSON结果了!

内容的提问来源于stack exchange,提问作者Dustin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:28:28