Skip to content

Commit 1b730b1

Browse files
committed
implemented new promisify util
1 parent 87760cc commit 1b730b1

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

lib/utils/promisify.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
export const promisify = (fn, NativeModule) => (...args) => {
2-
return new Promise((resolve, reject) => {
3-
const handler = (err, resp) => {
4-
setTimeout(() => {
5-
err ? reject(err) : resolve(resp);
6-
}, 0);
7-
}
8-
args.push(handler);
9-
(typeof fn === 'function' ? fn : NativeModule[fn])
10-
.call(NativeModule, ...args);
1+
const handler = (resolve, reject, err, resp) => {
2+
setImmediate(() => {
3+
if (err) return reject(err);
4+
return resolve(resp);
115
});
126
};
137

14-
export default promisify
8+
export default(fn, NativeModule) => (...args) => {
9+
return new Promise((resolve, reject) => {
10+
const _fn = typeof fn === 'function' ? fn : NativeModule[fn];
11+
if (!_fn || typeof _fn !== 'function') return reject(new Error('Missing function for promisify.'));
12+
return fn.apply(NativeModule, ...args, handler.bind(handler, resolve, reject));
13+
});
14+
};

0 commit comments

Comments
 (0)