Skip to content

Instantly share code, notes, and snippets.

@tw-Frey
Created November 9, 2018 07:46
Show Gist options
  • Save tw-Frey/abb75e04153d2adaa855e932d13a8bb9 to your computer and use it in GitHub Desktop.
Save tw-Frey/abb75e04153d2adaa855e932d13a8bb9 to your computer and use it in GitHub Desktop.
私作 Deferred 功能
const $DFD_Observer = (($, START_CALLBACK, FINISH_CALLBACK) => {
let Func_Faked = func => () => typeof (func) == "function" && func() || true;
let $DFD_Faked = $.Deferred().resolve()
let $DFD_Array = [];
return $dfd => {
$DFD_Array = $DFD_Array.filter($item => $item.state && $item.state() == "pending").concat($dfd || $DFD_Faked);
$.when($.Deferred(Func_Faked(START_CALLBACK)).resolve(), ...$DFD_Array)
.always(() => $DFD_Array.length <= 1 && $DFD_Array[0] == $DFD_Faked && Func_Faked(FINISH_CALLBACK)() || $DFD_Observer());
return $dfd;
}
})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment