Wie zu verwenden Versprechen in der forEach-Schleife der array zum füllen eines Objekts

Ich bin mit einer forEach-Schleife über ein array und macht zwei Anrufe, die Rendite verspricht, und das möchte ich füllen Sie ein Objekt, sagen this.optionsund dann machen Sie andere Sachen mit. Jetzt habe ich das async-Problem wenn ich das folgende Codebeispiel verwenden, und ich bekomme in der dann die Funktion first.

$.when.apply($, someArray.map(function(item) {
    return $.ajax({...}).then(function(data){...});
})).then(function() {
    //all ajax calls done now
});

Diese arbeiten folgenden code, aber es funktioniert nur für das erste element im array, weil ich nenne die resultierende Funktion in der .then von der Antwort. Ich will alles tun, die Holen zuerst für alle Elemente des Arrays und rufen Sie dann die Funktion, etwas zu tun.

array.forEach(function(element) {
    return developer.getResources(element)
        .then((data) = > {
            name = data.items[0];
            return developer.getResourceContent(element, file);
        })
        .then((response) = > {
            fileContent = atob(response.content);
            self.files.push({
                fileName: fileName,
                fileType: fileType,
                content: fileContent
            });
            self.resultingFunction(self.files)
        }).catch ((error) = > {
            console.log('Error: ', error);
        })
});

Wie kann ich Auffüllen der self.files Objekt nach der forEach-Schleife abgeschlossen ist, und rufen Sie dann die resultierende Funktion mit den Dateien, die Objekt?

InformationsquelleAutor der Frage rond | 2016-07-13

Schreibe einen Kommentar