then() から値を返すことと Promise.resolve との違いは何ですか? 質問する

then() から値を返すことと Promise.resolve との違いは何ですか? 質問する

違いは何ですか:

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

この:

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

Angular と $http サービスを .then() で連鎖して使用すると、異なる動作が発生するため、質問しています。コードが多すぎるため、まず上記の例を示します。

ベストアンサー1

簡単に言えば、thenハンドラー関数内では次のようになります。

A)xが値(数値、文字列など)の場合:

  1. return xは以下と同等であるreturn Promise.resolve(x)
  2. throw xは以下と同等であるreturn Promise.reject(x)

B) xPromise がすでに解決されている(保留中でない)のはいつですか。

  1. プロミスの解決された値が の場合y、 は とreturn x同等になりますreturn Promise.resolve(y)
  2. プロミスの拒否された値が の場合y、 は とreturn x同等になりますreturn Promise.reject(y)

C) xPromise が保留中になるのはいつですか。

  1. return x保留中の Promise を返し、後続の で評価されますthen

このトピックの詳細については、Promise.prototype.then() ドキュメント

おすすめ記事