2.17 回调函数
一个函数首先被当作参数传入给调用者,随后待调用者完成特定任务时才被执行,我们将这个函数称之为回调函数。在实际应用中,回调函数一般会被传入事件监听器、Ajax请求,或定时器中。对以下示例中回调函数的传入方式你肯定不会陌生:
var $button = $('<button class="select">Click</button>')
.appendTo('body');
asyncTest('Async callback event listener.', function () {
$button.on('click', function clicked() {
ok(true, 'Button clicked.');
start();
});
setTimeout(function timedOut() {
$button.click();
$button.remove();
}, 20);
});
如上述代码所示,clicked()回调函数被传入jQuery的on()方法中。当$button接收到click事件时,clicked()被调用,接着执行OK()断言与Start函数,从而告诉QUnit异步操作已经完成,可以继续执行测试用例。
紧接着,timedOut()回调被传入setTimeout()中,触发在$button上的click事件并删除$button引用中的DOM元素。
使用回调函数来处理异步操作简单而有效,但在指定的时间内,只能等待一个异步回调,而且每次回调中仅可以处理一个任务。但如果你需要管理多个异步操作的依赖关系该怎么办?下面介绍Promises。
时间: 2024-10-30 23:17:01