0
私は$interval
によって作成された約束、空想何を守る約束をキャンセルしません。別の約束($cordovaGeolocation
から)私は最初の約束($rootScope.recursivePosition
)を取り消すと、それはまだ4秒以上のようにしばらく働いています。この動作を制御できますか?
私は$interval
によって作成された約束、空想何を守る約束をキャンセルしません。別の約束($cordovaGeolocation
から)私は最初の約束($rootScope.recursivePosition
)を取り消すと、それはまだ4秒以上のようにしばらく働いています。この動作を制御できますか?
約束の約束は取り消すことができません。しかし、その約束に由来する約束は取り消すことができます。
function getAllPositions(x) {
var defer = $q.defer();
var derivedPromise = defer.promise;
derivedPromise.cancel = function() {
defer.reject('cancelled');
});
$cordovaGeolocation(x)
.then(function onSuccess(value) {
defer.resolve(value);
}).catch(function onReject(error) {
defer.reject(error);
});
return derivedPromise;
};
上記の例では、$cordovaGeolocation
約束に由来する約束を返します。それに添付されたcancel
というメソッドは、$cordovaGeolocation
が解決される前に呼び出されると約束を拒否します。
$cordovaGeolocation
によって開始される非同期操作を停止することはできませんが、その約束から連鎖した操作は取り消すことができます。
なぜサービスで '$ rootScope'を使用していますか? – Ankh
@Ankh、私のサービスは 'someService'と呼ばれています。私は' $ rootScope'を使って私の約束を追跡し、多くの場所からそれをオフにする必要があるのでサービス機能を "オン/オフ"それは2つです。 – distante
コードは、 'trackMe'関数が別の時間に呼び出されたときだけ、' $ interval'を取り消します。 '$ rootScope.tracking'がfalseに設定されている場合、$ intervalを"オフ "にしてはいけません。 – georgeawg