使用蓝鸟将cordova插件变成承诺

使用蓝鸟将cordova插件变成承诺,cordova,promise,bluebird,Cordova,Promise,Bluebird,我正试图找到一个优雅的解决方案,将cordova插件调用转换为bluebird承诺,并想知道是否有比这样做更好的方法: return new Promise(function (resolve, reject) { cordova.plugins.clipboard.paste(function (text) { if (text !== null) {

我正试图找到一个优雅的解决方案,将cordova插件调用转换为bluebird承诺,并想知道是否有比这样做更好的方法:

            return new Promise(function (resolve, reject) {
                cordova.plugins.clipboard.paste(function (text) {
                    if (text !== null) {
                        view.show();
                        resolve(text);
                    }
                    else {
                        reject();
                    }
                });
            });

cordova插件函数“粘贴”接受回调函数,在该回调函数中,我正在解决或拒绝承诺。还有比这更好的方法吗?

为科尔多瓦公约定义一个通用承诺人:

CordovaPromisifer功能(fn){
返回函数(){
var args=[].slice.call(参数);
var self=这个;
返回新承诺(功能(解决、拒绝){
参数推送(函数(结果){
如果(结果!==null){
决心(结果);
}否则{
//用于堆栈跟踪。
拒绝(新错误(“科尔多瓦错误”);
}
});
fn.应用(自身,参数);
});
}
}
用它来承诺一些东西:

promisifyAll(cordova.plugins.clipboard{
承诺人:科尔多瓦承诺人
});
调用指定函数:

cordova.plugins.clipboard.pasteAsync().then(函数(文本){
view.show();
});

所有函数都使用这种“
null
if error else resolve”约定吗?这是一个很好的答案,正是我想要的。非常感谢你,伊莎莉亚。对于希望使用此功能的其他人,请发表一条评论。确保有最新版本的蓝鸟。我有一个旧版本(2.0.7),promisifier被忽略了。cordova符号如何:
fn(成功,失败)
。这怎么能保证呢?