【问题标题】:How to chain axios HTTP requests如何链接 axios HTTP 请求
【发布时间】:2021-06-29 13:13:47
【问题描述】:

我有 2 个异步等待函数 - 其中一个发出 axios post 请求,另一个发出 axios get 请求。

如何链接它们,以便等到发布操作完成后,再获取新的和更新的对象?

const expensesListToDB = async () => {
    await axios.post('http://localhost:4000/app/expenseslist', 
    {
        expenseTitle: Expense,
        expenseAmount: Amount
    });
}

const expensesListFromDB = async () => {
    await axios.get('http://localhost:4000/app/expenseslist')
    .then(
    response => setExpenseAndAmountList(response.data && response.data.length > 0 ? response.data : []));
}

expensesListToDB();
expensesListFromDB();

谢谢!

【问题讨论】:

  • expensesListToDB返回promise,在.then你可以运行函数expensesListFromDB

标签: javascript http server async-await axios


【解决方案1】:

您可以将费用列表FromDB() 放在 Axios 的 'then' 方法中。

const expensesListToDB = async () => {
    await axios.post('http://localhost:4000/app/expenseslist', 
    {
        expenseTitle: Expense,
        expenseAmount: Amount
    }).then(
    response => expensesListFromDB()); }

const expensesListFromDB = async () => {
    await axios.get('http://localhost:4000/app/expenseslist')
    .then(
    response => setExpenseAndAmountList(response.data && response.data.length > 0 ? response.data : [])); }

expensesListToDB();

【讨论】:

    【解决方案2】:

    我认为 API 在您的控制范围内,其他人给出的答案是可行的p>

    要进行错误处理和容错,您可以像这样设计您的 API 响应

    { "statusCode":"200",
      "event":"doc_added_successfully",
      "newDocs":{
      }
    

    【讨论】:

      【解决方案3】:

      您可以从expensesListToDB 返回Promise,并在.then 块中运行函数expensesListFromDB

      一旦发出 HTTP POST 请求,Axios 会根据后端服务的响应返回一个已履行或拒绝的承诺。

      const expensesListToDB = () => {
        return axios.post("http://localhost:4000/app/expenseslist", {
          expenseTitle: Expense,
          expenseAmount: Amount,
        });
      };
      
      const expensesListFromDB = async () => {
        await axios
          .get("http://localhost:4000/app/expenseslist")
          .then((response) =>
            setExpenseAndAmountList(
              response.data && response.data.length > 0 ? response.data : []
            )
          );
      };
      
      expensesListToDB().then((data) => {
        expensesListFromDB();
      });
      

      【讨论】:

        猜你喜欢
        • 2017-10-26
        • 2023-01-12
        • 2022-08-09
        • 1970-01-01
        • 2020-09-27
        • 2020-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多