Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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
Javascript 嵌套承诺封装公共流_Javascript_Promise - Fatal编程技术网

Javascript 嵌套承诺封装公共流

Javascript 嵌套承诺封装公共流,javascript,promise,Javascript,Promise,我对javascript中的承诺还很陌生,我仍在努力找出用javascript将承诺链接在一起的最佳方法,例如 something().then(function(result){ console.log(result); }) function something(){ return another().then(function(result){ return "message"; }) } 如果某物()和另一个()都返回承诺,那么会在console.log()语句之

我对javascript中的承诺还很陌生,我仍在努力找出用javascript将承诺链接在一起的最佳方法,例如

something().then(function(result){
  console.log(result);
})

function something(){
  return another().then(function(result){
    return "message";
  })
}
如果某物()和另一个()都返回承诺,那么会在console.log()语句之前调用另一个()和它的then(),也就是说,它们会加入承诺的外部链,还是因为成功创建了内链,所以外部链会完成


我们的实际链通常更长更平坦,但我想封装一些重复代码,例如,我们进行了大量HTTP调用,这些调用返回承诺,我们希望在继续链之前执行一些常见的验证,但我们不希望在每个链中重复第二步。

内部承诺将链接到外部承诺中,并且在内部承诺也实现之前,外部承诺不会实现

.then()
处理程序返回承诺会自动链接到该承诺链,而外部承诺链在内部承诺链也被解析之前不会被解析。这是承诺的超级重要和有用的能力

工作演示: