结束承诺
帮助支持返回承诺或使用回调的API的小型模块.
示例
// my-method.js
var wrapPromise = require("wrap-promise");
function myMethod(arg) {
return new Promise(function (resolve, reject) {
doSomethingAsync(arg, function (err, response) {
if (err) {
reject(err);
return;
}
resolve(response);
});
});
}
module.exports = wrapPromise(myMethod);
// my-app.js
var myMethod = require("./my-method");
myMethod("foo")
.then(function (response) {
// do something with response
})
.catch(function (err) {
// handle error
});
myMethod("foo", function (err, response) {
if (err) {
// handle error
return;
}
// do something with response
});
在原型上环绕所有方法
function MyObject() {}
MyObject.prototype.myAsyncMethod = function () {
return new Promise(function (resolve, reject) {
//
});
};
MyObject.prototype.myOtherAsyncMethod = function () {
return new Promise(function (resolve, reject) {
//
});
};
module.exports = wrapPromise.wrapPrototype(MyObject);
静态方法,原型上的同步方法(虽然您通过一个函数作为您同步方法的最后一个参数,您会得到一个错误),原型上的非函数属性被忽略.
如果你想忽略某些方法,你可以通过一个 ignoreMethods 阵列.
module.exports = wrapPromise.wrapPrototype(MyObject, {
ignoreMethods: ["myMethodOnThePrototypeIDoNotWantTransformed"],
});
默认, wrapPrototype 忽略以下划线开头的方法。 您可以通过 : transformPrivateMethods: true
module.exports = wrapPromise.wrapPrototype(MyObject, {
transformPrivateMethods: true,
});