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

调用getFavourites返回Promise而非数组,无法访问电影ID数组

解决Promise包裹数组无法直接访问的问题

问题本质

fetch 是异步API,你的getFavourites函数返回的必然是Promise对象——异步操作不会立刻返回结果,而是通过Promise来承载未来会拿到的最终数据,这是异步编程的正常表现。

两种可行解决方案

方案1:用 .then() 链式调用取结果

调用getFavourites时,通过.then()接收异步完成后的数组:

getFavourites('目标用户名')
  .then(favouritesArray => {
    // 在这里直接使用数组,比如渲染收藏电影列表
    console.log(favouritesArray);
  })
  .catch(error => {
    // 处理请求失败、token无效等异常情况
    console.error('获取收藏列表失败:', error);
  });

方案2:用 async/await 语法(更直观)

如果调用getFavourites的函数本身是async函数,可通过await等待Promise完成:

// 定义一个async函数
async function loadUserFavourites() {
  try {
    const favouritesArray = await getFavourites('目标用户名');
    // 直接操作数组
    console.log(favouritesArray);
  } catch (error) {
    console.error('获取收藏列表失败:', error);
  }
}

// 执行函数
loadUserFavourites();

额外优化建议

你的getFavourites函数可以简化,同时增加响应状态校验,避免非成功状态下解析JSON出错:

export const getFavourites = (username) => {
  return fetch(`/api/users/${username}/favourites`, {
    headers: {
      'Authorization': window.localStorage.getItem('token')
    }
  })
  .then(res => {
    if (!res.ok) {
      throw new Error(`请求失败,状态码:${res.status}`);
    }
    return res.json();
  });
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:35:20