首页 > 解决方案 > 为什么 setImmediate() 在 expressJS 路由器中不起作用?

问题描述

我尝试从视图中调用 expressJS 函数

这是我的 AJAX:

const classify = (name) => {
    $.ajax({
        type: "GET",
        url: `http://localhost:3000/classify/${name}`,
        success: function (response) {
            //loader.hide()
            if (response.message != undefined) {
                alert(`${response.message}`)
                window.location = response.url
            }
        },
    });
}

$("#classify").on("click", () => {
    loader.show()
    wait.show()
    data.hide();
    const docsName = $("#nameDocs a").text();
    classify(docsName);
});

这是我的路由器:

router.get("/classify/:name", (req, res, next) => {
  let result = main(req.params.name);
  console.log("Function in process");

  console.log(`Get ${result}`);

  console.log("Next, send to view");
  setImmediate(() => {
    res.send({ url: "/", message: result });
    console.log("Send success");
  });
});

但是我很困惑,因为它是在函数执行完成之前的 res.send() 。所以我不确定。

我的控制台显示如下:

Function in process
Get undefined
Next, send to view
Send success
GET /classify/pdf_1617994486865_G_PM%20No.%2011%20Tahun%202010.pdf 200 18.193 ms - 11

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


推荐阅读