2016-04-09 14 views
1
function downloadAsync(url, name) { 
    return new Promise(function(resolve, reject) { 
    request(url, function(err, response, body) { 
     if (err) { 
     reject(err); 
     } else { 
     fs.writeFileSync(path.resolve(process.cwd(), 'downloaded_html', name), body); 
     console.log('got ' + url); 
     resolve(); 
     } 
    }) 
    }) 
} 

var urls = ['url1', 'url2', 'url3'] 

var promises = urls.map(function(url, i) { 
    var name = i + '.html' 
    downloadAsync(url, name) 
}) 

Promise.all(promises).then(function() { 
    console.log('download over') 
}) 

なぜ私のコードは「ダウンロード」を最初に印刷し、次にhtmlページをダウンロードし始めますか? このコードは最初にhtmlページをダウンロードしてから、「ダウンロード」を印刷することになっていました。あなたの約束配列には約束がないので、あなたは、あなたのマップになぜ、私のコードが最初にダウンロードしてから、htmlページをダウンロードし始めますか?

return downloadAsync(url, name); 

を返す必要が

答えて

1

は、基本的に我々のコードは、解決するための約束を待っていません。

+0

これは、ありがとうございます! – postget

関連する問題

 関連する問題