Node.js 为什么我的代码会打印';通过'下载;首先,然后开始下载html页面?

Node.js 为什么我的代码会打印';通过'下载;首先,然后开始下载html页面?,node.js,promise,Node.js,Promise,为什么我的代码先打印“下载”,然后开始下载html页面? 这段代码应该先下载html页面,然后打印“download over”。您需要在地图中返回 function downloadAsync(url, name) { return new Promise(function(resolve, reject) { request(url, function(err, response, body) { if (err) { reject(err);

为什么我的代码先打印“下载”,然后开始下载html页面?
这段代码应该先下载html页面,然后打印“download over”。

您需要在地图中返回

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')
})
基本上,我们的代码不会等待承诺得到解决,因为您的承诺数组中没有承诺

return downloadAsync(url, name);