Ich habe Probleme damit, wie man das in nodejs richtig macht. Dieser versucht, zwei Dinge parallel zu tun:Richtiger Weg mit async/warten auf parallele Anrufe
- lädt eine Webseite axios
- erstellt ein Verzeichnis
Verwendung Wenn diese fertig sind:
- speichern asynchron zu einer Datei führen de erstellt Verzeichnis
Dann wartet bis l getan
const uuidv1 = require('uuid/v1')
const fs = require('fs')
const util = require('util')
const axios = require('axios')
const path = require('path')
const mkdir = util.promisify(fs.mkdir)
const writeFile = util.promisify(fs.writeFile)
const downloadPage = async (url='http://nodeprogram.com') => {
\t console.log('downloading ', url)
\t const fetchPage = async function() {
\t \t const folderName = uuidv1()
\t \t return axios
\t \t \t .all([
\t \t \t \t mkdir(folderName),
\t \t \t \t axios.get(url)
\t \t \t ])
\t \t \t .then(axios.spread(function (f, r) {
\t \t \t \t writeFile(path.join(__dirname, folderName, 'file.html'), r.data);
\t \t \t }));
\t }
\t await fetchPage()
}
downloadPage(process.argv[2])
Also, was ist die genaue Frage? –
Wie man es richtig macht :-) Ich denke, es könnte einen Fehler bei der Platzierung von ascs/wartet und Rückkehr und Deklaration geben. – Jacco
Nicht in der Nähe von Computer, um genaues Beispiel einzugeben, aber was ich jetzt sehe: 1. Entfernen Sie async in fetchPage-Deklaration. 2. Setzen Sie den Aufruf der Schreibdatei nach der fetchPage-Zeile ab, entfernen Sie also 'then ...' mit ihr in der fetchPage-Definition –