[英]Can I use res.send() node.js method inside the loop?
我是 node.js 的初學者。 我已經創建了節點服務器並使用 express 編寫了簡單的程序,使用 res.send() 方法發送響應。 如果用戶訪問像 "/repeat/hello/5" 這樣的路由應該打印 hello 5 次並且單詞之間有空格。 例子:你好你好你好你好
var express = require("express");
var app = express();
var animalsData = {
"dog" : "Bow Bow",
"cat" : "Meow",
"pig" : "Oink",
"horse" : "Hiha",
"lion" : "Roar"
}
app.get("/", function(req,res){
res.send("Hi there! Welcome to my asssingment.");
});
app.get("/speak/:animal", function(req, res){
var name = req.params.animal;
if(animalsData[name]){
res.send("The " +name+ " says '" +animalsData[name]+ "'.");
} else
res.send("I don't know what " +name+ " say.");
});
app.get("/repeat/:word/:times", function(req, res){
var word = req.params.word;
var times = parseInt(req.params.times);
for(var i = 1; i<= times; i++){
res.send(word);
}
});
app.listen(process.env.PORT, process.env.IP);
作為第一個答案,你可以做類似的事情。
app.get("/repeat/:word/:times", function(req, res){
var word = req.params.word;
var times = parseInt(req.params.times);
for(var i = 1; i<= times; i++){
word = ' ' + word;
}
res.send(word);
});
如果你想要一個流媒體 API,看看這個文檔server-send-events(sse)
app.get("/repeat/:word/:times", function(req, res) {
var word = req.params.word;
var times = parseInt(req.params.times);
var x = '';
var y = word + ' ';
for (var i = 1; i <= times; i++) {
x += y;
}
res.send(x);
});
我試過了,它奏效了。
它的工作原理是將 for 循環包裝在一個函數中,然后
res.send(functionName(times));
由於我也是初學者,我認為這不是最佳實踐,但它有效......
app.get("/repeat/:word/:times", function(req, res){
var word = req.params.word;
var times = parseInt(req.params.times);
var str = ''
function myFunction(n){
for(var i = 1; i <= times; i++){
str += word + ' ';
}
return str;
}
res.send(myFunction(times));
});
而不是使用 res.send,在循環外使用 res.write 然后 res.end,因為你只能發送一次響應,所以它不能在循環中工作..
app.get("/repeat/:word/:num", function(req, res){
var number = req.params.num;
var word = req.params.word;
var numnum = parseInt(number);
for(var i = 0; i < numnum ; i++ ){
res.write(" " + word + " ");
}
res.end();
});
對同一請求再次發送響應會給您無法設置標頭錯誤。
一個請求只能有一個響應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.