Ich habe zwei Versprechen, die ich mit Versprechen löse. Alle:

var mictest1 = new Promise((resolve, reject) => {
  resolve(true);
});
var mictest2 = new Promise((resolve, reject) => {
  resolve(true);
});

Promise.all([mictest1, mictest2]).then(data => {
  console.log("test passed: " + data);
})

Ich möchte die Versprechen mictest1 und mictest2 in eine Funktion namens mictest() einfügen, damit Folgendes geschieht:

mictest();

Promise.all([mictest1, mictest2]).then(data => {
  console.log("test passed: " + data);
})

Auf diese Weise kann ich die Funktion nach Belieben aufrufen, und wenn die Versprechen kompliziert werden, habe ich diesen Textblock nicht vor promise.all

0
Isaak Newton 24 Feb. 2020 im 04:52

3 Antworten

Beste Antwort

Vielleicht suchen Sie nach der Funktion mictest, um die Promise.all zurückzugeben?

const mictest = () => {
  var mictest1 = new Promise((resolve, reject) => {
    resolve(true);
  });
  var mictest2 = new Promise((resolve, reject) => {
    resolve(true);
  });
  return Promise.all([mictest1, mictest2]);
};


mictest().then((data) => {
  console.log('test passed:', data);
});
1
CertainPerformance 24 Feb. 2020 im 01:55

Ich denke, Sie suchen nach einer Funktion, die das Versprechen zurückgibt:

function mictest() {
  return new Promise((resolve, reject) => {
    resolve(true);
  });
}

Du würdest es gerne benutzen

var mictest1 = mictest();
var mictest2 = mictest();
Promise.all([mictest1, mictest2]).then(data => {
  console.log("test passed: " + data);
})

Oder einfach

Promise.all([mictest(), mictest()]).then(data => {
  console.log("test passed: " + data);
})
1
Bergi 24 Feb. 2020 im 01:57

Nicht ganz so, wie Sie es sich vorgestellt haben, aber Sie können sehr nahe kommen:

let promises = mictest();

Promise.all(promises).then(data => {
  console.log("test passed: " + data);
})

Das ändert nur zwei Zeilen Ihres imaginären Codes. Die Implementierung ist einfach:

function mictest () {
  return [
    new Promise((resolve, reject) => {
      resolve(true);
    }),
    new Promise((resolve, reject) => {
      resolve(true);
    })
  ]
}

Ein Versprechen ist ein Wert wie Zeichenfolgen, Zahlen, Arrays usw. Sie können ihn wie einen beliebigen Wert behandeln. Es ist einfach ein Objekt, das eine .then() -Methode hat und erwartet wird

Hinweis: Tatsächlich wartet jedes Objekt mit einer .then() -Methode auf Ihr selbst erstelltes Nicht-Versprechen-Objekt (tatsächlich ist jedes Objekt mit einer .then() -Methode ein Versprechen, obwohl es kein Versprechen ist).

1
slebetman 24 Feb. 2020 im 02:10