javascript - 如何在 Angular 捕获 block 中传递参数

标签 javascript angularjs

想看看这是否可能,如果可能的话如何实现。在 Angular 的 .catch block 上,我想要回调handleError并传递一个id。但无论函数被调用,我都知道它是因为 Promise 是如何形成的。但我希望有一种方法可以在不事先调用函数的情况下仍然传递参数。

//controller
function handleError(id) {
  showErrorMessage(id);
}

callFactory
  .then(update)
  .catch(handleError)
  .finally(clearLoader);

// would like to use something like this.

callFactory
  .then(update)
  .catch(handleError(2)) //this gets called regardless
  .finally(clearLoader);

最佳答案

.catch 的第一个参数始终是抛出的异常。您可能可以通过闭包方法实现您正在寻找的目标。像这样的东西:

function handleError(id) {
  return function(err) {
    // access to both err and id
}

或者,您可以在.catch抛出 id,然后下一个catch会拾取它

.catch(err=> { throw id })
.catch(id=> ... )

关于javascript - 如何在 Angular 捕获 block 中传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46833686/

相关文章:

javascript - 如何更新子组件的状态?

javascript - angularjs无法动态调用函数

javascript - 尝试访问 JSON 项目时未定义

javascript - 向 Firebase 中的每个 child 添加数据

javascript - Angularjs标记表行或列取决于值

javascript - AngularJS 将数据从服务返回到 View

animation - Angular动画和Phonegap无法在移动设备上运行

javascript - Angular js : not seeing full results from promise unless console is opened

javascript - 脚本在 Chrome 和 IE 上无法正常工作

javascript - 在 AJAX 中将数据与 FormData 作为一个对象一起发送