Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如果失败X次,nodejs sendMessage函数_Node.js_Promise_Callback_Async Await_Slack Api - Fatal编程技术网

Node.js 如果失败X次,nodejs sendMessage函数

Node.js 如果失败X次,nodejs sendMessage函数,node.js,promise,callback,async-await,slack-api,Node.js,Promise,Callback,Async Await,Slack Api,我希望我的函数执行X(=3)次,直到成功 我知道这个问题看起来很相似,但没有一个答案有用 我只想将此消息发送给slack,如果失败,请重试3次 const选项={ “文本”:“你好” } 设flag=0 函数sendMessage(){ 持续承诺=新承诺((解决、拒绝)=>{ post(webhookURL、JSON.stringify(选项)) 。然后(响应=>{ 旗++ 返回解析('SUCCESS:Sent slack webhook',response.data) }) .catch(错误

我希望我的函数执行X(=3)次,直到成功

我知道这个问题看起来很相似,但没有一个答案有用

我只想将此消息发送给slack,如果失败,请重试3次

const选项={
“文本”:“你好”
}
设flag=0
函数sendMessage(){
持续承诺=新承诺((解决、拒绝)=>{
post(webhookURL、JSON.stringify(选项))
。然后(响应=>{
旗++
返回解析('SUCCESS:Sent slack webhook',response.data)
})
.catch(错误=>{
返回拒绝(新错误('FAILED:Sent slack webhook',Error))
})
})
回报承诺
}
for(设maxRetry=0;maxRetry<3;maxRetry++){
常量p=sendMessage()
P
。然后((状态)=>{
console.log(状态)
})
.catch((错误)=>{
console.log(错误)
})
console.log('flag',flag)
如果(标志>=1){
打破
}
}
即使在成功之后,它也会运行3次。这个承诺没有起作用 输出


我对nodejs是新手。如果你们中的任何人都能在这里帮助我,这将非常有帮助。

有一个使用
async/wait
功能的解决方案,这将允许您在运行另一个异步函数调用之前等待承诺得到解决

成功的例子:

//const axios=require('axios');
函数sendMessage(){
返回新承诺((解决、拒绝)=>{
axios
.get('https://jsonplaceholder.typicode.com/posts/1')
。然后(响应=>{
解析('SUCCESS:sentedslackwebhook',response.data);
})
.catch(错误=>{
拒绝(新错误('FAILED:Sent slack webhook',Error');
});
});
}
(异步函数循环(){
for(设i=0;i<3;i++){
log('loop count=',i);
试一试{
const res=等待发送消息();
控制台日志(res);
打破
}捕获(错误){
console.log(错误);
}
}
})();

我更新了问题。请再看看。我被困在这里了。如果失败,则失败3次,如果运行,则运行3次。它不会在第一次成功后停止。问题是循环在标记更新一次之前就完成了,因为它是异步执行,所以所有标记都为0。。。。因此,标准循环在本例中不起作用,那么我应该如何正确运行它呢。如何使其同步。你能写一个答案让它正常工作吗?在我的答案中检查解决方案
flag 0
flag 0
flag 0
SUCCESS: Sent slack webhook
SUCCESS: Sent slack webhook
SUCCESS: Sent slack webhook