Quelle est la différence entre le retour de la valeur ou de la Promesse.résoudre à partir de l'époque()

Quelle est la différence entre:

JS:

new Promise(function(res, rej) {
    res("aaa");
  })
  .then(function(result) {
    return "bbb";
  })
  .then(function(result) {
    console.log(result);
  });

et ce:

JS:

new Promise(function(res, rej) {
    res("aaa");
  })
  .then(function(result) {
    return Promise.resolve("bbb");
  })
  .then(function(result) {
    console.log(result);
  });

Je demande que je reçois des comportements différents à l'Aide Angulaire et $service http avec le chaînage .alors(). Un peu trop de code donc d'abord l'exemple ci-dessus.

  • Ce "comportement différent" voyez-vous? Les deux exemples devraient travailler et de se comporter approximativement la même. Le Promise.resolve() dans le deuxième exemple est inutile.
  • Il n'y a rien de mal que ce soit avec le retour d'une promesse d'un then gestionnaire, en fait, c'est un aspect clé de l'promesses spec que vous pouvez le faire.
  • Notez que cela fonctionne avec arbitrairement imbriquée thens - les "autres langues" terme utilisé pour cela est que then est à la fois un map et un flatMap.
  • dans la ligne 2 pourquoi avez-vous de l'appeler res("aaa"), pourquoi ne peut-retour "aaa" être suffisant, et la Promesse de captures de la résolution() de la même manière qu'il attrape les exceptions pour les rejeter() ?
InformationsquelleAutor spirytus | 2014-12-31