在GET上的res.render()回调中的res.json()

时间:2015-11-05 12:50:52

标签: node.js express

我正在某个页面上的GET上初始化一种聊天机器人应用程序。我想:

  1. 渲染页面(快速):res.render()
  2. 当它完成(回调)时,执行一个函数(initializeDialogue()),该函数将启动服务器端java应用程序,然后返回一个JSON对象,其中包含一条必须打印的消息。相同的呈现页面:res.json()
  3. 问题是我在同一页面上找不到res.render()然后res.json()的方法。我可以

    以下是代码的一部分:

    router.get('/dialogue', function (req, res) {
    
      // Render the HTML (from dialogue.jade)
      res.render('dialogue', { title: 'Dialogue' }, function (err, html) {
    
        // Initialize the dialogue (launch a java child_process, etc.)
        // Slow! >2000ms
        initializeDialogue(function (err, result) {
    
          // From returned result, send a JSON message to the same page
          res.status(200).json({
            type: result.type,
            speaker: result.speaker,
            utterance: result.utterance
          });
        });
      });
    });
    

    我在呈现页面之前当然可以initializeDialogue(),并将JSON消息作为res.render()的参数传递,但由于initializeDialogue()进程太重,所以它持续时间超过2秒并且我不希望用户在呈现页面之前等待很长时间(但是他可以在收到第一条消息之前等待很长时间)。

    有没有解决方案?

0 个答案:

没有答案