使用蓝鸟将cordova插件变成承诺
我正试图找到一个优雅的解决方案,将cordova插件调用转换为bluebird承诺,并想知道是否有比这样做更好的方法:使用蓝鸟将cordova插件变成承诺,cordova,promise,bluebird,Cordova,Promise,Bluebird,我正试图找到一个优雅的解决方案,将cordova插件调用转换为bluebird承诺,并想知道是否有比这样做更好的方法: return new Promise(function (resolve, reject) { cordova.plugins.clipboard.paste(function (text) { if (text !== null) {
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(成功,失败)
。这怎么能保证呢?