私はjQueryの遅延機能の利点を理解しようとしてきました。私が正しく理解している場合、Deferredはコールバックの代替手段を提供しませんが、コールバックのより良い管理を提供しますか?メソッドを作成していて、別のタスクを実行する前に実行が終了したことを確認したい場合でも、deferred.resolve
?を設定するためのコールバックが必要になります。これが私が正しいと思うことを説明するためのコード例です:
これは親関数です。デフォルトを選択する前に、 「 PASSWORDsToList 」が完了していることを確認したいと思います。(これは実際の関数ではなく、単なる例です)。
function PopulateListAndSelectDefault(list,default)
{
var resultObject = AddItemsToList($('#myList'), list);
successObject.Success(function(){
SelectItemInList($('#myList'), default);
});
}
これは、' PASSWORDsToList '関数を記述するための誤った方法になります。
function AddItemsToList (jquerySelectList,items)
{
var result= $.Deferred();
$.each(items, function (i, _property)
{
if (CheckElementIsSelectList(_property.Value))
{
jQueryListItem.append($("<option></option>").attr("value", _property.value).text(_property.DisplayText)); //Add Item
}
}
result.resolve;
return result;
}
代わりに、正しい方法は、コールバックを引き続き使用することですが、今回は遅延オブジェクトのみを解決して、必要に応じて後で成功/失敗メソッドをアタッチできるようにしますか?
私は正しく理解しましたか?上記のコードを書く正しい方法は何でしょうか、それとも私は基本を完全に誤解していましたか?前もって感謝します。