forked from bang590/JSPatch
-
Notifications
You must be signed in to change notification settings - Fork 0
GCD 扩展使用文档
bang edited this page Sep 10, 2016
·
1 revision
JSPatch 核心内置了 GCD 常用的四个接口:dispatch_async_main()
dispatch_sync_main()
dispatch_after()
dispatch_async_global_queue()
,详见基础用法。
若要使用其他GCD接口,可以使用 JPDispatch 扩展,里面封装了以下GCD接口:
dispatch_get_global_queue()
dispatch_get_main_queue()
dispatch_queue_create()
dispatch_async()
dispatch_sync()
dispatch_barrier_async()
dispatch_barrier_sync()
dispatch_apply()
dispatch_group_create()
dispatch_group_async()
dispatch_group_wait()
dispatch_group_notify()
dispatch_group_enter()
dispatch_group_leave()
dispatch_time()
以及一些相关静态常量:
DISPATCH_QUEUE_PRIORITY_HIGH
DISPATCH_QUEUE_PRIORITY_DEFAULT
DISPATCH_QUEUE_PRIORITY_LOW
DISPATCH_QUEUE_PRIORITY_BACKGROUND
DISPATCH_TIME_NOW
DISPATCH_TIME_FOREVER
DISPATCH_QUEUE_CONCURRENT
DISPATCH_QUEUE_SERIAL
除了 dispatch_time()
,其他所有接口定义都与原生接口一致,使用示例:
//JS
require('JPEngine').addExtensions(['JPDispatch']);
var queue = dispatch_queue_create("com.jspatch", DISPATCH_QUEUE_CONCURRENT);
var group = dispatch_group_create();
dispatch_group_async(group, queue, function(){
console.log(@"group async 1");
});
dispatch_group_wait(group, dispatch_time(5));
dispatch_group_async(group, queue, function(){
console.log(@"group async 2");
});
dispatch_group_notify(disgroup, disqueue, function(){
console.log(@"dispatch_group_notify");
});