iOS:JS operation use seperated thread

This commit is contained in:
pengfei.zhou
2020-05-13 10:02:22 +08:00
committed by osborn
parent 1830acf977
commit 81dfce17fb
4 changed files with 59 additions and 30 deletions

View File

@@ -55,7 +55,7 @@ - (DoricRegistry *)registry {
- (DoricAsyncResult *)invokeDoricMethod:(NSString *)method argumentsArray:(NSArray *)args {
DoricAsyncResult *ret = [[DoricAsyncResult alloc] init];
__weak typeof(self) _self = self;
dispatch_async(self.jsExecutor.jsQueue, ^() {
[self.jsExecutor ensureRunOnJSThread:^{
__strong typeof(_self) self = _self;
if (!self) return;
@try {
@@ -64,7 +64,7 @@ - (DoricAsyncResult *)invokeDoricMethod:(NSString *)method argumentsArray:(NSArr
} @catch (NSException *exception) {
[ret setupError:exception];
}
});
}];
return ret;
}
@@ -76,7 +76,7 @@ - (DoricAsyncResult *)invokeDoricMethod:(NSString *)method argumentsArray:(NSArr
[array addObject:arg];
}
__weak typeof(self) _self = self;
dispatch_async(self.jsExecutor.jsQueue, ^() {
[self.jsExecutor ensureRunOnJSThread:^{
__strong typeof(_self) self = _self;
if (!self) return;
@try {
@@ -85,7 +85,7 @@ - (DoricAsyncResult *)invokeDoricMethod:(NSString *)method argumentsArray:(NSArr
} @catch (NSException *exception) {
[ret setupError:exception];
}
});
}];
return ret;
}
@@ -108,7 +108,7 @@ - (DoricAsyncResult *)invokeContextEntity:(NSString *)contextId method:(NSString
arg = va_arg(args, JSValue *);
}
__weak typeof(self) _self = self;
dispatch_async(self.jsExecutor.jsQueue, ^() {
[self.jsExecutor ensureRunOnJSThread:^{
__strong typeof(_self) self = _self;
if (!self) return;
@try {
@@ -117,7 +117,7 @@ - (DoricAsyncResult *)invokeContextEntity:(NSString *)contextId method:(NSString
} @catch (NSException *exception) {
[ret setupError:exception];
}
});
}];
return ret;
}
@@ -130,7 +130,7 @@ - (DoricAsyncResult *)invokeContextEntity:(NSString *)contextId method:(NSString
[array addObject:arg];
}
__weak typeof(self) _self = self;
dispatch_async(self.jsExecutor.jsQueue, ^() {
[self.jsExecutor ensureRunOnJSThread:^{
__strong typeof(_self) self = _self;
if (!self) return;
@try {
@@ -139,14 +139,14 @@ - (DoricAsyncResult *)invokeContextEntity:(NSString *)contextId method:(NSString
} @catch (NSException *exception) {
[ret setupError:exception];
}
});
}];
return ret;
}
- (DoricAsyncResult *)createContext:(NSString *)contextId script:(NSString *)script source:(NSString *)source {
DoricAsyncResult *ret = [[DoricAsyncResult alloc] init];
__weak typeof(self) _self = self;
dispatch_async(self.jsExecutor.jsQueue, ^() {
[self.jsExecutor ensureRunOnJSThread:^{
__strong typeof(_self) self = _self;
if (!self) return;
@try {
@@ -155,14 +155,14 @@ - (DoricAsyncResult *)createContext:(NSString *)contextId script:(NSString *)scr
} @catch (NSException *exception) {
[ret setupError:exception];
}
});
}];
return ret;
}
- (DoricAsyncResult *)destroyContext:(NSString *)contextId {
DoricAsyncResult *ret = [[DoricAsyncResult alloc] init];
__weak typeof(self) _self = self;
dispatch_async(self.jsExecutor.jsQueue, ^() {
[self.jsExecutor ensureRunOnJSThread:^{
__strong typeof(_self) self = _self;
if (!self) return;
@try {
@@ -171,7 +171,7 @@ - (DoricAsyncResult *)destroyContext:(NSString *)contextId {
} @catch (NSException *exception) {
[ret setupError:exception];
}
});
}];
return ret;
}