描述
示例: do_async_action(action_name)
功能: 2.0
用异步方式调用动作钩子
简介: 钩子简介:什么是钩子,为什么使用钩子
::: tip
当你明确知道,这个 action 可能会存在异步调用的情况时,则应该使用异步动作钩子。
作用:这将强制性的顺序依次调用每个添加的钩子,哪怕它们执行时有延时。
注意:在add_action时,将强制将第一个参数设置为next(其他参数顺移),在add_action中处理完事件后,必须调用一次next() 方法,否则后面的action将不会被执行
约定:为了能够快速识别异步钩子,并在add_action时明确知道需要使用next参数,在定义动作名称时,应在前面明确标注 async: 字样
:::
参数
action_name
(String) (Required)
动作名称
返回
(Promise)
示例
add_action("async:sample_hook",(next, arg1, arg2)=>{
// 这将在第二步执行
console.log(`第二步:${arg2}`)
next()
}, 10)
add_action("async:sample_hook",(next, arg1, arg2)=>{
// 这将在第一步执行,哪怕延迟了1秒,第二步也不会提前执行
setTimeout(()=>{
console.log(`第一步:${arg1}`)
next()
},1000)
}, 3)
add_action("async:sample_hook",(next, arg1, arg2)=>{
// 这将在第三步执行
setTimeout(()=>{
console.log(`第三步:${arg1}-${arg2}`)
next()
},500)
}, 11)
do_async_action("async:sample_hook", "参数1", "参数2")
.then(()=>{
console.log("示例异步钩子全部执行完毕")
})