1

私はまだ Promise に慣れていません ( jQuery ではなくPromises/A+のように)、古いクライアント側のコードの一部を Promise を返すように変換して、特にコールバックをアップストリームに渡す代わりにダウンストリームを使用できるようにしたいと考えています。 、Web ストレージと AJAX に関するすべて。

問題は、私が使用している AJAX ライブラリ ( Oboe.then ) です。jQuery スタイルの API がありますが、メソッドはありません。つまり、自分自身を構築して返す必要new Promiseがありますが、次のアプローチは最適ですか? 関数をラップせずにstaticPromise.resolveを使用して何かを行うことはできますか? Promise.reject私の例は次のとおりです。

古いコード

function makeRequest(uri, callback) {

    var request = ajax(uri);

    request.fail(function(err) {
        // handle failure
    });

    request.done(function(res) {
        callback(res);
    });

}

新しいコード

function makeRequest(uri) {

    return new Promise(function(resolve, reject) {

        var request = ajax(uri);

        request.fail(function(err) {
            reject(err);
        });

        request.done(function(res) {
            resolve(res);
        });

    });

}

より良いコード?

function makeRequest(uri) {

    var request = ajax(uri);

    request.fail(function(err) {
        // handle failure
    });

    request.done(function(res) {
        // handle complete
    });

    // this won't work without third-party .then support
    return Promise.resolve(request);

}

(ネイティブの Promise と polyfill のみを使用してこれを行うつもりですが、これに対するヘルパーを備えたライブラリがあれば、それらの実装を見て喜んでいます。)

4

0 に答える 0