javascript - Node : Express. 如何延迟响应?

标签 javascript node.js express

我已经定义了一条路线。当请求 URL 时,将调用一个异步函数,该函数将在完成时返回一个值。返回的值将是我对 get 请求的响应。所以,我想延迟response.get直到返回值。

我考虑过将响应传递给回调函数。

app.get("/:param", (request, response) => {
    let param = request.params.param
    search(param, response, displayResult)
})

function displayResult(info, response){
    console.log(info)
    response.end(info)
}

function search(query, response, callback) {
    request("https://www.google.co.uk", (err, response, body) => {
        if (!err && response.statusCode == 200) {
            return callback("Hello there! "+query, response)
        } else {
            console.log(err)
        }
    })
}

这行不通。浏览器给出错误:ERR_EMPTY_RESPONSE,程序崩溃并出现错误:TypeError: response.end is not a function。

我一直在寻找答案。我想我处理事情的方式是错误的。

异步函数返回后如何响应?

最佳答案

仔细阅读您的代码。

function search(query, response, callback) {
  request("https://www.google.co.uk", (err, response, body) => {

您的 lambda 还有一个名为 response 的参数。这就是 "Shadowing"外面的——ExpressJS 的。

给它们一个独特的名字,它就会起作用:

function search(query, response, callback) {
    request("https://www.google.co.uk", (err, result, body) => {
        if (!err && result.statusCode == 200) {
            return callback("Hello there! "+query, response)

关于javascript - Node : Express. 如何延迟响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794945/

相关文章:

javascript - 任何人都可以帮我分析这些代码的 Backbone 每个功能的含义?

javascript - Coffeescript Ajax——无法让变量在函数之外工作?

javascript - React 中的重复键无法解决问题。遇到两个 child 拥有同一把 key

node.js - Passport 可以保存不在 req.user 中的用户对象吗?

javascript - 如何获取嵌入在选择选项中的输入文本的值?

javascript - 当用户遍历 map 时,如何根据当前 map Canvas 绘制标记

node.js - 重命名 Mongoose 中的字段

node.js - 检测是否有 sudo 正确的信息

node.js - 在 View 中获取编译的 Jade 模板?

javascript - 如何使用nodejs和express上传图片?