[英]Unexpected token function in node callback
我真的是節點和回調的新手。 我正在處理Nodeschool問題:使用回調順序返回三個給定URL的數據。 我將三個URL的結果放在一個對象中,以按順序跟蹤它們。 但是,我一直未能通過測試,因為我認為在將所有URL放入其中之前,將返回URL對象。
TLDR:
這是令人反感的功能。 它不斷告訴我“ SyntaxError:意外的令牌功能”。 但是,當我將console.log(urlObj[url])
放入其自己的函數中並在storeUrl
按名稱調用它時,我認為它不是在if
語句之后運行的...
function storeUrl(url, info, function(url) {
// Only log after all the checking is done
console.log(urlObj[url]);
} ){
// add data to a dict? or something?
// to keep track of them???
if(url == url1){
urlObj[url1] = info;
}
if(url == url2){
urlObj[url2] = info;
}
if(url == url3){
urlObj[url3] = info;
}
}
這是我的整個文件:
var http = require('http');
var bl = require('bl');
var url1 = process.argv[2];
var url2 = process.argv[3];
var url3 = process.argv[4];
var urlObj = {};
urlObj[url1] = '';
urlObj[url2] = '';
urlObj[url3] = '';
function firstUrl(callback, callback){
getHttp(url1);
callback(url2);
callback(url3);
}
function startItOff(){
firstUrl(function secondUrl(contents){
getHttp(contents);
}, function thirdUrl(contents){
getHttp(contents);
});
// This is what I ultimately want:
// A log of the data of each URL, in order, on its own line:
for (item in urlObj){
console.log(urlObj[item]);
}
}
//////////////
// Above this line is ok,
// now trying to retrieve the url only after
// getting the right one. The getHttp shows
// them in the right order, but retrieveHttp
// doesn't have an order to it.
/////////////
function getHttp(url){
middleman(url, retrieveHttp);
}
function middleman(url, callback){
callback(url);
}
function retrieveHttp(url){
http.get(url, function(res){
res.setEncoding('utf8');
res.pipe(bl(function(err,data){
if (err) return Error('Error');
storeUrl(url, data.toString(), callback);
}));
});
}
function storeUrl(url, info, function(url) {
console.log(urlObj[url]);
} ){
// add data to a dict? or something?
// to keep track of them???
if(url == url1){
urlObj[url1] = info;
}
if(url == url2){
urlObj[url2] = info;
}
if(url == url3){
urlObj[url3] = info;
}
// Also trying to log the data from the URLs here:
console.log(urlObj[url1]);
}
startItOff();
這行是語法錯誤:
function storeUrl(url, info, function(url) {
// Only log after all the checking is done -->
因此,當Node表示其語法錯誤時,它不是在說謊:)。 當您定義函數的自變量時,您不能在其中包含函數。
這將是有效的語法:
function storeUrl(url, info, callback) {
console.log(url);
callback();
}
我建議不要嘗試同時學習Node和Javascript。 學習Javascript基礎知識和調試,然后回調,然后解決Node。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.