同步功能中承诺绝不解析

问题描述 投票:-1回答:2

时会发生什么承诺函数异步函数内部从来没有解决或拒绝,所以下面里面,如果保存条件是否得到不满足会发生什么,这不是给错误了初始,将它在那里等候,直到永远响应接收的方法?

save().then(results=>{

})

save():promise<any>{
  if (conditionA) {
    return http request
  }
  if (conditonB) {
    return http request}
  }
}
asynchronous promise resolve
2个回答
1
投票

如果你的承诺有时会返回一个承诺,那么它应该总是返回一个承诺。如果你发现你并不需要有一个承诺,在某些代码路径返回通常的设计模式是,你只是做一个return Promise.resolve()。因此,保持与你的伪代码,你会做这样的事情:

save().then(results=>{

})

save():promise<any>{
  if (conditionA) {
    return request(...);
  } else if (conditonB) {
    return request(...);
  } else {
    return Promise.resolve(...);
  }
}

您填写上面的...部分,使其适合您的功能。但是,如果您有时返回一个承诺,然后始终返回一个承诺。然后,调用者可以只坚持用返回的承诺。如果工作已经完成(或没有什么做的),那么你只返回一个早已解决的承诺,主叫方总是能够使他们能够作为一个承诺使用一致的返回值。


请注意,它们没有一个你的问题的称号相匹配,但它完全符合您的问题的机构。是您的标题就是错误的或者是有你的问题描述的某些部分是缺少?


0
投票

一个简单的答案应该是,保存()如果从该方法包括:服务调用(HTTP调用)返回的任何类型的承诺,如果它永远不会解决它永远不会进入再处理程序的一部分不能被定义,但它不能给错误未定义。如果没有条件在的if else条件并没有什么满意的回报可以给未定义的错误。

© www.soinside.com 2019 - 2024. All rights reserved.