Kodumda, bir dizi işlev çağrım var. Bu çağrıların üstesinden geliyorum ve onları aramak için .apply() kullanın. Sorun, yeni işlev çağrısı herhangi bir zaman alırsa, döngü .apply() işlevini ve önceki işlev bitmeden önce bir sonraki işlevi çağırmasıdır. >. Bir geri arama uygulamak işlevini olmadığını.apply() yöntemine nasıl bir geri arama ekleyebilirim?
function someFunc(element, calls){
if(calls.length){
fn = calls[0];
calls.shift();
fn.apply(element, args);
someFunc(element, calls);
}
}
Öyleyse bu ben istiyorum nasıl işe yarayabilir: < İşte bir örnek.
function someFunc(element, calls){
if(calls.length){
fn = calls[0];
calls.shift();
fn.apply(element, args, function(){
someFunc(element, calls);
});
}
}
Ayrıca bir geri arama işlevinin içinde someFunc çağrılması hakkında bir sorum var. calls
dizimdeki işlevler benim element
değişkenimi etkiler. Bu yüzden, değiştirildikten sonra, bir sonraki işlevin de bunu değiştirebilmesinden dolayı, geri aramada bazıFunc'a geçtiğinden emin olmak istiyorum. Bazen sadece this
bağlamıyla karıştırıldım. :)
Eğer yardımcı olursa jQuery kullanıyorum. JQuery yöntemlerine nasıl geri arama ekleyebileceğimi biliyorum, ancak yerel JavaScript koduyla uğraşırken bunu nasıl yapacağımı bilmiyorum. .apply() yöntemine nasıl bir geri arama ekleyebilirim?
Tüm işlevlerinizin izlediği bir parametre kalıbı bilmedikçe, istediğinizi yapmaya imkan yoktur. – Pointy
@Pointy - Parametrelerimin tümünü "args" dizisine koyarsam neden bir parametre modeline ihtiyacım olurdu? – Aust
Sorun, bir işlevin zaman uyumsuz olup olmadığını ve bir geri arama işlevi parametresini (veya bu tür iki parametreyi veya daha fazlasını) kabul edecek şekilde tasarlanıp tasarlanmadığını anlamanın bir yolu olmamasıdır. Sistemin bir işlev için "beklemesini" ve zaman uyumsuz takibini bitirmesi için yapamazsınız. Böylelikle eğer * bilirseniz * işlevlerinizin tümü (örneğin) son parametre olarak geri arama yaparsanız, o zaman bir şeyleri halledebilirsiniz. – Pointy