在代理中如何判断用户是否期望承诺?

时间:2017-04-23 01:12:09

标签: javascript reflection proxy-classes

我已经设置了代理" promisify"像这样的回调函数:

const browser = new Proxy({}, {
    get: function(target, name, receiver) {
        return function(...args) {
            if (userExpectsPromise) { // how to detect this?
                return new Promise(resolve => chrome[name](...args, resolve))
            } else {
                return chrome[name](...args);
            }
        };
        return target[name];
    }
});

这样做可以让用户执行browser.***('arg1', 'arg2'),这会在***分支上调用chrome

然而,***分支上的chrome部分接受回调的最终参数。如果是这样,用户会添加.then,这样他们就可以 - browser.***('arg1', 'arg2').then(.....)。如果用户执行了.then,我需要检测/拦截。这可能吗?

我的另一个选择是硬编码哪个chrome.***接受回调,但这不是安全的方式,因为chrome.*** API总是在不断发展。

0 个答案:

没有答案