首页 > 解决方案 > 循环中异步等待后节点脚本不会停止

问题描述

const axios = require("axios");
const Parser = require("./utils/parser");
const WebStore = require("./models/webstore");
const mongoose = require("mongoose");
require("./db/connection");
require("dotenv").config();

const url = "";
const app_secret = process.env.APP_SECRET;
const buff = new Buffer(app_secret);
const base64 = buff.toString("base64");
axios
  .get(url, {
    headers: {
      Accept: "application/json",
      Authorization: `Basic ${base64}`,
    },
    params: {
      from_date: "2020-02-19",
      to_date: "2021-02-21",
    },
  })
  .then(async (response) => {
    const data = response.data.split("\n");
    const events = [];
    data.forEach((point) => {
      try {
        const dat = Parser.toDB(JSON.parse(Parser.parser(point)));
        events.push(dat);
      } catch (err) {}
    });
    events.forEach(async (event) => {
      try {
        const e = new WebStore(event);
        await e.save();
        console.log("saved");
      } catch (err) {
        console.log("fail");
      }
    });
  })
  .catch((err) => {
    console.error(err);
  });


所以执行后脚本saved多次输出,但脚本本身并没有关闭。

执行后数据存储在数据库中,我尝试过 mongoose.disconnect(),也尝试过 mongoose.connection.close()。我该如何解决这个问题?

标签: javascriptnode.jsasynchronousasync-awaitaxios

解决方案


推荐阅读