提问者:小点点

如何使用异步/等待语法重写此请求?


任务如下:

  1. 您需要对资源发出GET请求:https://jsonplaceholder.typicode.com/posts使用提取方法
  2. 将响应保存到response。json文件
  3. 仅保存那些项目,其中id为

我写的是:

const fetch = require('node-fetch');

const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, 'response.json');

fetch('https://jsonplaceholder.typicode.com/posts')
    .then(res => res.json())
    .then(data => {
        const refined = data.filter(item => item.id < 20);
        const stringified = JSON.stringify(refined);

        fs.appendFile(filePath, stringified, err => {
            if (err) {
                throw err;
            }
        });
    });

如何使用async/await语法编写相同的fetch?


共2个答案

匿名用户

await关键字只能在async函数中使用,因此需要编写一个异步函数,使API请求获取数据

async function fetchData() {
   const response = await fetch('https://jsonplaceholder.typicode.com/posts');
   const data = await response.json();

   const refined = data.filter(item => item.id < 20);
   const stringified = JSON.stringify(refined);
   
   // promise version of appendFile function from fs.promises API
   await fs.appendFile(filePath, stringified);
}

fs模块的nodeJS有使用promise而不是回调的函数.如果你不想使用回调版本,你将需要使用promise版本的appendFile函数。

您可以将fs模块的promise版本导入为要求('fs')。

要处理错误,请确保调用此函数的代码有一个catch块来捕获和处理可能从此函数引发的任何错误。您还可以使用try catch块包装此函数中的代码,以处理此函数中的错误。

附带提示:如果您想以易于阅读的格式在文件中写入数据,请更改

const stringified = JSON.stringify(refined);

const stringified = JSON.stringify(refined, null, 4); 

匿名用户

下面的代码片段可以帮助您(在节点v14中测试)

const fetch = require("node-fetch")

const fs = require("fs")
const path = require("path")
const filePath = path.join(__dirname, "response.json")

async function execute() {
  const res = await fetch("https://jsonplaceholder.typicode.com/posts")
  const data = await res.json()

  const refined = data.filter((item) => item.id < 20)
  const stringified = JSON.stringify(refined)

  fs.appendFile(filePath, stringified, (err) => {
    if (err) {
      throw err
    }
  })
}

execute()

相关问题