0

私は自分のウェブサイトでプロミスを使用しています(まだ学習中です)が、これに違いがあるかどうかを知りたいです:

    return promise
            .then(ctxTransport.getTransportById(idTran, transport))
            .then(checkLocking)
            .fail(somethingWrong);

この:

    return promise
        .then(function () { return ctxTransport.getTransportById(idTran, transport); })
        .then(function () { return checkLocking(); })
        .fail(somethingWrong);

最初の実装では、時々エラーが発生しました。

var getTransportById = function (transportId, transportObservable, forceRemote) {
    // Input: transportId: the id of the transport to retrieve
    // Input: forceRemote: boolean to force the fetch from server
    // Output: transportObservable: an observable filled with the transport

    ...

    return manager.executeQuery(query)
        .then(querySucceeded)
        .fail(queryFailed);

    function querySucceeded(data) {
        transportObservable(data.results[0]);
    }
};

function checkLocking() {
     var now = new Date();
     transport().lockedById(5);
     transport().lockedTime(now);
     return ctxTransport.saveChanges(SILENTSAVE);
 }

 function somethingWrong(error) {
     var msg = 'Error retreiving data. ' + error.message;
     logError(msg, error);
     throw error;
 }

ありがとう。

4

1 に答える 1

0

promise チェーンで関数を渡すときは、引数なしで関数名を渡すか()、または 2 番目のケースのように無名関数を渡す必要があります。これはQ、前の promise 解決の結果/戻り値でそれを呼び出すためです。

したがって、.then(ctxTransport.getTransportById(idTran, transport))関数を渡すのではなく、の戻り値を渡すため、意味的に正しくありませんctxTransport.getTransportById

于 2013-06-10T05:04:17.147 に答える