前言
在 web 开发中,我们经常需要处理异步调用和异步回调,这种模式下很容易造成代码流程的混乱和调试困难。dejavu-call 就是为了解决这个问题而生的一个 npm 包。使用 dejavu-call,可以让代码流程更加清晰,易于调试。
dejavu-call 的介绍
dejavu-call 是一个在事件触发时,将事件支持函数(函数列表)按顺序依次执行的轮询库。当轮询目标是异步函数时,可以通过添加回调函数来处理异步调用和回调。
安装 dejavu-call
可以通过以下命令安装 dejavu-call:
npm install dejavu-call --save
接下来我们就可以在自己的代码中使用 dejavu-call 了。
dejavu-call 的使用
下面我们来看一个简单的例子:
-- -------------------- ---- ------- --- ------ - ----------------------- -------- ----- - ------------------- - -------- ------------- - ------------------- -- - ------------------- ----------- -- ------ - -------------------- ----- ------ -----------------------
我们先定义了两个函数:foo 和 bar。bar 是一个异步函数,会在 1 秒后先输出 'bar',再执行传入的回调函数。
接下来,我们用 dejavu-on 函数注册了一个事件叫做 'myevent',并传给这个事件一个函数列表 [foo, bar]。当事件被触发时,这个函数列表就会被轮询。
最后,我们通过 dejavu-emit 函数触发事件 'myevent'。这时候,foo 函数和 bar 函数就会被按顺序执行,最后会输出:
foo bar
下面是 dejavu-call 最常用的函数:
dejavu.on(eventName, functionArray)
注册事件,把需要执行的函数列表传给这个事件。
dejavu.on('myevent', [foo, bar]);
dejavu.emit(eventName[, arguments])
触发事件,并可以通过 arguments 传递参数给函数列表。
dejavu.emit('myevent', 'hello', 'world');
dejavu.unbind(eventName)
解除事件绑定。
dejavu.unbind('myevent');
dejavu-call 的高级使用
接下来,我们来看一个更加复杂的例子。
-- -------------------- ---- ------- --- ------ - ----------------------- -------- ------------- - ------------------- ---------------- - -------- ------------- - ------------------- ---------------- - -------- ----- - ------------------- - -------------------- ----- ---- ------ -----------------------
首先,我们定义了三个函数:foo、bar 和 baz。这个例子不同于之前的例子,在这个例子中,每个函数都传入了一个回调函数,而这个回调函数是之后一个函数的调用参数。
我们用 dejavu.on 来注册事件 'myevent',并把函数列表传给这个事件。当这个事件被触发时,函数列表里的函数会被轮询。每个函数在执行完成后,都会主动调用其后的一个函数,并把自己的执行结果传给这个函数。
在这个例子中,当我们执行 dejavu.emit('myevent') 后,首先执行的是 foo 函数。foo 函数在内部调用了 bar 函数,并把自己执行的结果传递给了 bar 函数。bar 函数在内部再调用 baz 函数,并把自己执行的结果传递给了 baz 函数。最后,baz 函数被执行。
如果我们给 dejavu.emit('myevent') 传入一个参数,那么这个参数会作为第一个函数的回调函数执行的参数。例如:
dejavu.on('myevent', [foo, bar, baz]); dejavu.emit('myevent', 'hello');
这时候,当 foo 函数被执行时,它会立即调用回调函数,并把参数 'hello' 传递给它。bar 函数也是同理。
总结
在本篇文章中,我们介绍了 npm 包 dejavu-call 的基本使用和高级用法。dejavu-call 是一个非常方便的工具,利用它,我们可以让代码更加清晰,易于调试。希望大家能够善加利用,提高工作效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055bd281e8991b448d9734