我仍然試圖用JS定向,並且最近在理解回調角色方面遇到了很多麻煩。JavaScript:使用回調控制程序流程
我可以看到,回調提供了一種更加異步(?)的方式來返回函數中生成的值。例如,這對我來說很有意義:
function summation (a, b, _callback) {
if (typeof(_callback) === 'function') {
_callback(a+b);
}
}
$(document).ready(function() {
summation(2,3,function (_val) {
console.log(_val);
}
});
與之相對類似var _val = summation(2,3);
當var
不可立即指派以下。
我嘗試使用jQuery處理網頁上的元素時,難以製作此過程。我有跟蹤元件的對象:如果我想傳遞test.mainPane
成函數fitToPage()
調節所述元件的特性以滿足給定的屏幕尺寸
function createObj (_callback) {
var test = new Object();
test.mainPane = $('#mainPane');
if (typeof(_callback) === 'function') {
_callback(test);
}
}
,然後想要的元件傳遞給另一個功能createElems()
這增加了兒童元素,事情開始土崩瓦解:
$(document).ready(function() {
createObj(function (test) {
fitToPage(test, function (test) {
createElems(test, null);
});
});
});
而且只似乎越來越差,如果我嘗試通過創建特殊的功能,這什麼也不做避免這種回調地獄,但幫我管理的回調(?)到其他功能。我相信我錯過了一些重要的東西,但還沒有拿出正確的搜索條件來找到它。有更好的方法嗎?
使用承諾。 http://blog.slaks.net/2015-01-04/async-method-patterns/ – SLaks 2015-03-02 19:52:55
你的求和函數有回調的目的是什麼?爲什麼它不能只是'函數求和(a,b){返回a + b; ''? – 2015-03-02 20:10:08
@ c-smile:我懷疑這只是爲了說明回調是如何工作的。用一個實際的異步進程替換summing ... – 2015-03-02 20:12:42