Javascript节点获取同步获取

时间:2018-09-03 08:38:31

标签: javascript async-await synchronous node-fetch

我正在尝试将node-fetch与nodejs结合使用以对我的个人api进行api调用。我希望能够在此期间定期同步更新某些值,因为在后台我的数据库会进行更新/更改。我知道异步和等待存在,但是我在使用谷歌搜索的全部过程中仍然不太了解它们或它们如何与获取请求进行交互。

这是我尝试开始工作的一些示例代码,但仍然只是记录未定义

const fetch = require('node-fetch');
const url = 'http://example.com';
let logs;

example();
console.log(logs);
async function example(){
    //Do things here
    logs = await retrieveLogs();
    //Do more things here
}

async function retrieveLogs(){
    await fetch(url)
    .then(res => res.json())
    .then(json => {return json})
    .catch(e => console.log(e))
}

4 个答案:

答案 0 :(得分:3)

正如阿里·托尔基(Ali Torki)在评论中所说,fetch()是一个异步函数,无论如何都无法“使”同步。如果必须与HTTP同步获取(例如,因为必须在必须异步的属性获取器中使用它),则必须使用不同的HTTP客户端,句号。

答案 1 :(得分:2)

我认为您需要返回类似以下内容的retrieveLogs函数结果:

o__Enterobacterales;f__Yersiniaceae;g__Yersinia;s__Yersinia pestis
o__Enterobacterales;f__Yersiniaceae;g__Yersinia;s__
o__Methylococcales;f__Crenotrichaceae;g__Crenothrix;s__Crenothrix polyspora
o__Methylococcales;f__;g__;s__
o__Xanthomonadales;f__Xanthomonadaceae;g__Xylella;s__
o__Xanthomonadales;f__Xanthomonadaceae;g__Xylella;s__Xylella fastidiosa
o__Xanthomonadales;f__Xanthomonadaceae;g__Xylella;s__Xylella taiwanensis

答案 2 :(得分:2)

npm install sync-fetch

围绕 Fetch API 的同步包装器。在底层使用 node-fetch,也用于一些输入解析代码和测试用例。

https://www.npmjs.com/package/sync-fetch

答案 3 :(得分:0)

使用立即调用的异步函数表达式:

(async () => {
  try {

    const response = await fetch('http://example.com')
    const json = await response.json()

  } catch (error) {
    console.log(error);
  }
})();