から返された約束を使用しようとしていますBackbone.model.save()
。実際には、仕様ごとに、有効な場合は promise を返し、そうでない場合は false を返します。今後は型に関係なく戻り値を利用したいと思いdeferred.done()
ますdeferred.fail()
。このような:
var promise = model.save();
$.when(promise).done(function() {
console.log('success!');
});
$.when(promise).fail(function() {
console.log('dang');
});
しかし、$.when()
non-promise を渡すと発火done()
するので、上の例では、モデルが無効な場合に$.when(false).done()
発火し、「成功しました!」となります。
success
でおよびerror
属性を使用できることはわかっていますsave()
が、私のコードでは、done()
後で複数の関数を適用する方が有利です。それが約束の力です。
だから、私は残っています:
var promise = model.save();
if (promise) {
$.when(promise).done(function() {
console.log('success!');
});
$.when(promise).fail(function() {
console.log('dang');
});
} else {
console.log('dang');
}
DRYではないのが嫌いです。
var promise = model.save();
var fail = function() {
console.log('dang');
};
if (promise) {
$.when(promise).done(function() {
console.log('success!');
});
$.when(promise).fail(function() {
fail();
});
} else {
fail();
}
かなり乱雑になっています。あなたは絵を手に入れます。ここで何かが足りないことを願っています。