1. ホーム
  2. javascript

[解決済み] then 関数の内部からプロミスを拒否する方法

2023-02-07 18:35:49

質問

くだらない質問ですが、プロミス・チェーンで、プロミスを拒否するにはどうしたらいいのでしょうか? 例えば

someActionThatReturnsAPromise()
    .then(function(resource) {
        return modifyResource(resource)
    })
    .then(function(modifiedResource) {
        if (!isValid(modifiedResource)) {
            var validationError = getValidationError(modifiedResource);
            // fail promise with validationError
        }
    })
    .catch(function() {
        // oh noes
    });

元のresolve/reject関数やPromiseResolverへの参照はもうありません。 私はただ return Promise.reject(validationError); ?

どのように解決するのですか?

<ブロッククオート

私はちょうど追加することになっていますか return Promise.reject(validationError); ?

はい、ただし。 はそれほど複雑なのです。 を使うのはjQueryだけです。 プロミス/A+ -に準拠したライブラリを使えば、単純に

throw validationError;

そうすると、コードは次のようになります。

someActionThatReturnsAPromise()
    .then(modifyResource)
    .then(function(modifiedResource) {
        if (!isValid(modifiedResource))
            throw getValidationError(modifiedResource);
        // else !
        return modifiedResource;
    })
    .catch(function() {
        // oh noes
    });