2017-06-18 3 views
0

私のindex.htmlファイルのフォームから入力を取得し、POSTsというファイルをlocalhost:8080で実行されているノードスクリプトに取得するコードがあります。次に、ノードスクリプトは入力を受け取り、LUIS.ai APIを呼び出して照会し、応答を戻します。しかし、返答には長い時間がかかり、ページを更新してフォームの提出を確認して結果を得る必要があります。これを行うより効率的な方法がありますか?私はNode.jsが初めてです。使用して非同期に対処することを約束フォーム提出後にNode.jsで効率的にレスポンスを送信する

app.js

//Modules 
var express = require('express'); 
var bodyParser = require('body-parser'); 
var request = require('request'); 
var http = require('http'); 

//Variables and definitions 
var app = express(); 
var query = null; 
//LUIS.ai URL 
var luisURL = "LUIS_API_URL"; 
var intent = null; 

//body-parser 
app.use(bodyParser.urlencoded({ extended: true })); 

//Get and handle LUIS.ai data 
function getLUISData(urlLUIS){ 
    //Get LUIS.ai JSON data 
    request({url:urlLUIS, json:true}, function (error, response, body) { 
     intent = body 
    }); 
    return intent; 
} 

//Get query from HTML form 
app.post('/query', function(request, response) { 
    query = request.body.query; 
    luisURL = luisURL.concat(encodeURIComponent(query)); 
    var data = getLUISData(luisURL); 
    response.send(data); 
}); 

app.listen(8080); 

index.htmlを

<!DOCTYPE html> 
<html> 
<body> 
    <form action="http://127.0.0.1:8080/query" method="post"> 
     <input type="text" name="query"/> 
     <input type="submit" value="Submit" /> 
    </form> 
</body> 
</html> 
+0

リクエストは非同期です。要求を約束してください。 –

+0

@Dinesh申し訳ありませんが、node.jsを初めて使う人はどうすればいいですか? –

答えて

1

。約束についてもっと読むことができますhere

function getLUISData(urlLUIS){ 
     //Get LUIS.ai JSON data 
    return new Promise((resolve, reject) => { 
     request({url:urlLUIS, json:true}, function (error, response, body) { 
      if (err) return reject(err); 
      try { 
       resolve(body); 
      } catch(e) { 
       reject(e); 
      } 
     });//end of request 

    });//end of promise 
} 

app.post('/query', function(request, response) { 
    query = request.body.query; 
    luisURL = luisURL.concat(encodeURIComponent(query)); 
    getLUISData(luisURL).then(function(data){ // execution will wait here until request completes. here promise gives you data. 
     response.send(data); 
    }); 
}); 
+0

ありがとうございました! –

+0

あなたはようこそ。@ NikhilRaghavendra –

関連する問題