【发布时间】:2018-07-19 16:49:34
【问题描述】:
我正在尝试编写一个 QT 用于 angularjs $q 承诺的 promisify 函数,但我似乎无法理解它。
QT 承诺类似于:
method(arg, arg, callback);
所以如果 C++ 有一个方法可以连接两个字符串,那么调用将是:
method('A', 'B', function(result) {
console.log(result); //would print 'AB'
});
我希望能够承诺这种方法,所以这样的事情会起作用:
var promiseMethod = $q.promisify(method);
promiseMethod('A', 'B')
.then(result) {
console.log(result);
}
我开始添加我的装饰器,但似乎无法正确调用实际的方法:
.config(function($provide) {
$provide.decorator('$q', function($delegate, $rootScope) {
$delegate.qtPromisify = function(fn) {
/// ARGH! what goes here!, this don't work.
return function() {
var args = Array.prototype.slice.call(arguments);
return $delegate(function(resolve, reject) {
var result = fn.apply(null, args);
resolve(result);
});
}
};
return $delegate;
});
})
【问题讨论】:
标签: javascript angularjs qt promise