0
我正在用Node(Express)從列表中搜索URL來編寫小的廢料工具。問題是在forEach循環中訪問請求回調函數以外的的搜索結果。請幫助 - 爲什麼結果數組在請求之外是空的?我想將這個結果導出到視圖中。此外,請求內定義的任何變量都不是從外部定義的。 這裏我的代碼:數據不可見外部節點請求功能
var express = require('express');
var request = require('request');
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false });
var fs = require("fs");
var app = express();
app.get('/scrap/',function(req,res){
res.render('start.ejs');
});
app.post('/scrap/result', urlencodedParser, function(req,res){
var lista = req.body.lista;
var phrase = req.body.phrase;
var l = lista.split('\n');
var results = []; // declaring results array
l.forEach(function(elem) {
request(elem, function(error, response, html) {
try {
if (html.indexOf(phrase) > 0) {
var result = 'Phrase "' + phrase + '" found';
}
else {
var result = 'Phrase "' + phrase + '" not found';
}
}
catch(err) {
var result = 'Error: '+ err.message;
}
results.push(result);
console.log(results) // here results array is filled with result
});
console.log(results); // results array is empty
});
console.log(results); // results array is also empty
res.render('result.ejs', {
result : results[0],
phrase : phrase,
});
});
app.use(function(req, res, next){
res.redirect('/scrap');
});
app.listen(3000);
呵呵,看起來我仍然對JS中的異步調用有很多瞭解...謝謝... – Tehawanka
您的解決方案工作得很好btw!只有我將「q」換成了「Promise」:Promise.all(responsePromises)。 – Tehawanka
只是一種記憶 - y promise.all – akaphenom