【发布时间】:2014-05-26 16:56:51
【问题描述】:
我需要有关承诺链中 notify() 的帮助。
我有 3 个 promise 基函数 connect()、send(cmd)、disconnect()。现在我想编写另一个函数来用进度通知以下列方式包装这些调用。
function bombard() {
return connect()
.then(function () {
var cmds = [/*many commands in string*/];
var promises = _.map(cmds, function (cmd) {
var deferred = Q.defer();
deferred.notify(cmd);
send(cmd).then(function (result) {
deferred.resovle(result);
});
return deferred.promise;
});
return Q.all(promises);
})
.finally(function () { return disconnect() })
}
这样运行函数
bombard.then(onResolve, onReject, function (obj) {
console.log(ob);
});
我想我会收到我发送的每个命令的通知。但是,它并没有像我预期的那样工作。我实际上什么都得不到。
虽然我相信这是由于这些通知没有传播到外部承诺,但我不知道如何在 Q 上传播这些通知或包装承诺链:connect、send、disconnect in一个延迟对象。
谢谢
【问题讨论】:
标签: javascript promise q