在执行以下代码之前,如何获取节点js发送axios请求

时间:2018-12-12 03:12:38

标签: node.js

我正在编写代码以接收来自新闻API的新闻,并向我发送每日电子邮件,其中包含基于cron职位的头条新闻。

我需要先接收数据,然后将其映射到一个变量中,我添加了async await,但由于某种原因它无法正常工作。

如果运行此代码,它将仅打印“摘要前”,就是这样。

如果有条件,它就不会进入内部,但是我对此进行了异步等待,因此服务器首先响应,然后继续执行代码,并具有“新闻”进行摘要。

const cron = require("node-cron");
const express = require("express");
const moment = require("moment")
const axios = require("axios")
app = express();
var news;
app.listen("3000")

//I removed my API key from the code and wrote 'MYAPIKEY'.
async function getNews(){
  let response = await axios.get('https://newsapi.org/v2/everything?q=bitcoin&from=2018-11-12&sortBy=publishedAt&apiKey=MYAPIKEY')
  .then( response =>
    news = response.data.articles
    )

}

getNews()
console.log('Before summary')
if (news) {
var summary = news.map( newsItem =>   newsItem.title )
console.log(summary)
}

1 个答案:

答案 0 :(得分:1)

如果您正在使用async

,则不需要
async function getNews() {
    try {
        let response = await axios.get('https://newsapi.org/v2/everything?q=bitcoin&from=2018-11-12&sortBy=publishedAt&apiKey=MYAPIKEY');
        var news = response.data.articles;
        if (news) {
            var summary = news.map(newsItem => newsItem.title) console.log(summary)
        }
    } catch (err) {
        console.error(error);

    }
}
getNews();