iOS:use JSDispatcher to avoid overstock too many js tasks
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
#import "DoricExtensions.h"
|
||||
#import "DoricRefreshableNode.h"
|
||||
#import "DoricPromise.h"
|
||||
#import "DoricJSDispatcher.h"
|
||||
|
||||
@implementation DoricScrollView
|
||||
|
||||
@@ -54,6 +55,7 @@ @interface DoricScrollerNode () <UIScrollViewDelegate>
|
||||
@property(nonatomic, copy) NSString *onScrollFuncId;
|
||||
@property(nonatomic, copy) NSString *onScrollEndFuncId;
|
||||
@property(nonatomic, strong) NSMutableSet <DoricDidScrollBlock> *didScrollBlocks;
|
||||
@property(nonatomic, strong) DoricJSDispatcher *jsDispatcher;
|
||||
@end
|
||||
|
||||
@implementation DoricScrollerNode
|
||||
@@ -144,12 +146,19 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
|
||||
block(scrollView);
|
||||
}
|
||||
if (self.onScrollFuncId) {
|
||||
[self callJSResponse:self.onScrollFuncId,
|
||||
@{
|
||||
@"x": @(self.view.contentOffset.x),
|
||||
@"y": @(self.view.contentOffset.y),
|
||||
},
|
||||
nil];
|
||||
if (!self.jsDispatcher) {
|
||||
self.jsDispatcher = [DoricJSDispatcher new];
|
||||
}
|
||||
__weak typeof(self) __self = self;
|
||||
[self.jsDispatcher dispatch:^DoricAsyncResult * {
|
||||
__strong typeof(__self) self = __self;
|
||||
return [self callJSResponse:self.onScrollFuncId,
|
||||
@{
|
||||
@"x": @(self.view.contentOffset.x),
|
||||
@"y": @(self.view.contentOffset.y),
|
||||
},
|
||||
nil];
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user