res.write跨越多个函数

时间:2018-03-19 16:22:02

标签: javascript node.js express

我正在尝试显示来自用户搜索的域搜索结果。应用程序的流程是:

  • 用户进行搜索(可能是stackoverflow.com)。
  • 应用程序返回该搜索的结果。
  • 在后台,应用程序会不断搜索其他域,并在准备好后显示结果。

我在Node.js中使用Express,根据我的理解,可以使用res.write()并使用res.end()完成它。但是,根据我目前的设置,我只是得到一个"写完后#34;错误。

我认为这是由于Javascript异步性质,但我是一个新的开发人员,所以这只是我的猜测。

这是我的代码pre-res.write。如何以最佳方式重写它,创建res.write流?

router.get("/new", function(req, res) {
    //Strip all subdomains - the post var now only contains the domain and TLD.
    var post = getDomain(req.query.id);

    //Check if the user inserts a valid TLD.
    if (!tldExists(post)) {
        return res.send(JSON.stringify("invalidTld"));
    }

    //I want to replace every res.send with res.write after this comment
    functions.singleDomain(parse(req.query.id).hostname)
        .then(function(value) {
             res.send(JSON.stringify(value));
        })
        .catch(function(error) {
             res.send(JSON.stringify(error));
        })

    functions.checkDB(post)
        //Check if domain has been resolved within the last 24 hours.
        .then(function(value) {
            let promise;
            if(value !== false) {
                console.log("Domain has been resolved within the last 24 hours");
                return res.send(JSON.stringify(value));
            } else {
                promise = functions.lookupDomain(post);
            }
            return promise;
        })
        .then(function(value) {
            res.send(JSON.stringify(value));
        })
        .catch(function(error) {
            console.log(error);
        })
});

0 个答案:

没有答案