2016-02-08 61 views
1

我有這樣的腳本:加盟Node.js的水珠陣列的循環導致

var glob = require('glob'); 
glob('*.jpg', { cwd: 'public/portfolio/weddings/', sort: true }, function (err, files) { 
    var globResults = files; 
    globResults.forEach(function(entry) { 
    var results = '\'' + entry + '\''; 
    console.log(results.join(',')); 
    }); 
}) 

join(',')無法正常工作,導致腳本失敗。沒有它實際輸出:

'image-1.jpg' 
'image-10.jpg' 
'image-11.jpg' 
'image-12.jpg' 
'image-13.jpg' 
'image-14.jpg' 
'image-15.jpg' 
'image-16.jpg' 
'image-17.jpg' 
'image-18.jpg' 
'image-19.jpg' 

預期輸出:

'image-1.jpg', 
'image-10.jpg', 
'image-11.jpg', 
'image-12.jpg', 
'image-13.jpg', 
'image-14.jpg', 
'image-15.jpg', 
'image-16.jpg', 
'image-17.jpg', 
'image-18.jpg', 
'image-19.jpg' 

後來我想打電話給在陣列的循環這個輸出。

回答

1
var glob = require('glob'); 
glob('*.jpg', { cwd: 'public/portfolio/weddings/', sort: true }, function (err, files) { 
    var globResults = files, 
     results = []; 
    globResults.forEach(function(entry) { 
    results.push('\'' + entry + '\''); 
    }); 
    console.log(results.join(',')); 
}) 

這是你在找什麼?由於forEach的回調,日誌不應該受到影響,因爲它是一個阻塞循環結構IIRC。如果確實會造成麻煩,那麼您可能需要在那裏使用常規循環。

再想一想爲什麼你不能直接加入文件?像這樣

console.log("'"+files.join("', '")+"'"); 
+0

謝謝!完美的作品!我選擇了最後一種方法,直接加入他們。我嘗試了第一次嘗試直接加入他們,但可能我搞砸了一些東西,它沒有奏效,然後我實現了forEach。但正如你所說,這是非常簡單的解決方案。 – Lanti