我使用的是Node.js的promise,这里的问题确实给了我一点意义。基本上,我有一个如下的函数:
var foo = foo (resolve, reject) {
return obj
.doA()
.doB()
.then(function (value) {
// here I choose if I want to resolve or reject.
})
.catch(function(err) {
});
}
var promise = new Promise(foo);
return promise
.then(function() {
// I know here what I have to return.
})
.catch(function(err){
// I want to repeat the foo function until it is resolved and not rejected.
})
obj
是promise对象。我想重试foo函数,只要promise实现;如果被拒绝,那么再试一次。
我不知道如何构造链条。有人帮忙吗?谢了。
尝试使用递归在foo
的声明中包含函数
function foo() {
var n = String(new Date().getTime()).slice(-1);
// if `n` < 5 reject `n` , else resolve `n`
return Promise[n < 5 ? "reject" : "resolve"](n)
.then(function(value) {
return value
// here I choose if I want to resolve or reject.
})
.catch(function(err) {
return Promise.reject(["rejected", err])
});
}
(function repeat() {
var promise = Promise.resolve(foo());
return promise
.then(function(data) {
console.log("complete", data)
// I know here what I have to return.
})
.catch(function(err) {
// I want to repeat the foo function until it is resolved and not rejected.
console.log(err);
if (err[0] === "rejected") repeat()
})
}())
问题内容: 我正在尝试从我的应用程序发送紧急短信。我必须确保SMS发送成功。 在Android系统启动后并进行检查后,将发送SMS。 因此,我有一个处理BOOT_COMPLETED意向过滤器的服务类。此类进行检查,如果内容正确,则尝试通过另一个“扩展服务”类发送SMS消息 确保成功发送短信后,两个服务(处理启动呼叫的服务和发送短信的服务)都必须退出。 问题1 :如何使我的短信发送功能在超时的情况下
问题内容: 我听到这样的观点,您应该完全避免使用try / catch,因为它占用很多资源。那么诺言错误处理会更快吗?还是没关系? UPD :我知道try / catch在内部的异步代码中不起作用。我只是在想是否由于性能问题而有任何避免使用try / catch的理由?以上两种方法之间有什么区别吗? UPD2 :试着跑我的马:) https://jsperf.com/try-catch-vs- p
我实现了以下代码来处理我未来的完成,它编译得很好 我对它的工作原理有点困惑,我假设它确实如此,因为我从Scala文档中的类似示例中复制了它 我知道onComplete需要一个函数,该函数将尝试作为输入,成功和失败都是从尝试扩展而来的case类 我不明白的是,如果不首先进行某种类型的匹配,你怎么能在这些情况下进行。 这怎么可能在这里?
我试过这个:
在 scala 中,您将如何编写一个函数来获取期货序列,运行所有函数,不断重试任何失败的函数,并返回结果? 例如,签名可以是: 加分为一个可配置的超时,在这一点上的功能失败,被调用者可以处理这种情况。< br >如果错误案例处理程序可以接收失败的期货列表,则奖励加分。 谢谢!
编辑 继续重试直到promise解决的模式(具有延迟和最大重试次数) #1的代码。不断重试,直到promise解决为止(语言社区有任何改进吗?) 使用 #2的代码继续重试,直到以可重用的方式产生结果(条件是会发生变化的)。
因此,我不确定如何在.setOnAction事件期间计算节点的高度,我已尝试/不确定还要尝试什么我正在尝试在添加节点后查找vBox的高度,但它只是在添加新节点之前打印节点的高度 运行该示例,然后单击将标签添加到vBox并输出的按钮 实际结果: 预期结果: 但是如果你点击打印VBox高度按钮,它会显示正确的高度: