javascript - 如何将数据从 Promise 推送到数组

标签 javascript node.js node-fetch

我想将数据从 Promise 推送到数组 (coursesArray),然后在其他地方使用数组值。我正在使用node-fetch库来查询API。目前,当我在 promise 内记录数组时,它具有值(coursesOne),但是当我在 promise 外记录数组时,它是空的(coursesTwo)。我该如何实现理想的解决方案,以便在 getCoursesForSitemap() 时,coursesArray 充满数据?执行

这是我到目前为止所实现的

const coursesArray = [];

const getCoursesForSitemap = () => {
  fetch(coursesUrl)
    .then(res => res.json())
    .then(json => {
      json.courses.results.map(course => {
        return coursesArray.push(course.slug);
      });
      console.log('coursesOne', coursesArray);
    })

    .catch(error => {
      console.log(error);
    });
};
getCoursesForSitemap();
console.log('coursesTwo', coursesArray);

最佳答案

重构您的代码以使用async/await,并且不使其改变闭包外/全局变量,这应该适合您。

const getCoursesForSitemap = async () => {
  const result = await fetch(coursesUrl);
  const json = await result.json();
  return json.courses.results.map(course => course.slug);
};
const coursesArray = await getCoursesForSitemap();
console.log('coursesTwo', coursesArray);

如果您的环境不支持顶级异步/等待,您将需要执行异步代码,例如: IIFE:

(async function() {
  const coursesArray = await getCoursesForSitemap();
  console.log('coursesTwo', coursesArray);
}());

(该函数还将返回一个 promise ,您可以 .then()await on...)

关于javascript - 如何将数据从 Promise 推送到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58697346/

相关文章:

node.js - 通过 Electron js 应用程序的 headless 浏览器自动化应用程序

html - 从html中的脚本获取javascript对象

node.js - 如何实现嵌套 Node 获取调用?

javascript - 是否可以 fork 子进程并等待它们在 Node/JS 中返回?

javascript - 访问 API 返回 JSON 数组

javascript - 无法访问 AEM 中 javascript 内的 html 变量

node.js - 在NodeJS中使用带有大量数据的Datatable时搜索错误

javascript 将我的身份验证功能变成一个 promise

mysql - 未使用 1 :1 association 中的sequelize 分配外键

node.js - 我看似有效的 URL 在本地解析,但在部署到 heroku 上时失败