Bu kodu aldığımda, sonuçları çözümlenmiş veya reddedilmiş bir söz olarak iade edilmelidir.Kullanıcı girdisine bağlı olarak JQuery sözü nasıl çözülür
var runChecks = function(hasClickId, maxClicksModeIsNotOff) {
var dfd = $.Deferred();
clickIdCheckPassed = hasClickId; // equals false
maxClicksCheckPassed = maxClicksModeIsNotOff; // equals false
if (!clickIdCheckPassed) {
clickIdCheckPassed = runClickIdCheck();
}
if (!maxClicksCheckPassed) {
maxClicksCheckPassed = runMaxClicksCheck();
}
if (maxClicksCheckPassed && clickIdCheckPassed) {
dfd.resolve('Resolved');
} else {
dfd.reject('rejected');
}
return dfd.promise();
};
Fonksiyonlar runClickIdCheck()
ve üzerinde runMaxClicksCheck()
toplamak kullanıcı girişi ve esaslı, true
veya false
ya dönüş.
if (maxClicksCheckPassed && clickIdCheckPassed) {
dfd.resolve('Resolved');
} else {
dfd.reject('Rejected');
}
Ancak, sorun kodu kullanıcı girişi için beklemek olmamasıdır ve her seferinde değerlendirir: dolayısıyla koşullu - Her iki elde edilen değerler, true
ise, ben aksi takdirde reddedilmelidir, sözünü çözmelidir Kullanıcı herhangi bir girdi vermeden önce 'reddedildi' sözünü verir. gibi runClickIdCheck
işlevi nasıl göründüğünü Başvuru için
şudur ki: beklendiği gibi davranmasına Bu kodu yapabilirsiniz nasıl
var runClickIdCheck = function() {
bootbox.confirm('Are you sure?', function(result) {
if (result) {
return true;
}
});
return false;
};
Ben 'kararlılığı' olarak söz değerlendirmek, böylece sadece kullanıcı girişi bağımlı işlevleri her ikisi de doğru mu?
Düzenleme:
beklenen UI davranışı formu kullanıcı iki kez diyaloğu teyit yalnızca sunulmalıdır gerektiğidir:
$form.submit(function(e) {
e.preventDefault();
$.when(runChecks(hasClickId, maxClicksModeIsNotOff)).then(
function(status) {
$form.submit()
},
function(status) {
return false;
}
);
}
budur ben söz inteface yapacağını düşündü neden iş. runClickIdCheck()
ve runMaxClicksCheck()
true
için değerlendirirse, söz veriyorum shoudl.
Burada sözlerini kötüye kullandığınızı düşünüyorum. Çekiniz tamamen senkronize görünüyor, bu yüzden (mümkün olsa bile), sözel anlambilimine ayakkabı çekmek için gerçekten gerekli değil. Sadece çek çalıştır ve gerektiğinde çalıştır. Çözmeyi denediğiniz problem hakkında daha fazla bilgi verin, yani UI davranışını uygulamak için neler yapıyorsunuz? Ayrıca bunu gösteren gerekli işaretleme ekleyin. – Tomalak
@Tomalak "runClickIdCheck" yöntemi eşzamansız gibi görünüyor. OP mantıksal olarak ilgili geri aramada ayarlamalı veya bu eklenti yöntemi (bilmediğim) vaat arayüzünü –
@ A.Wolff Ah işlemek zorundadır, tabii ki doğru. – Tomalak