链接承诺与参数



我想知道AngularJS中是否有以下内容的简写:

$scope.parseSomeString = function (str) {
    console.log(str);
    // ...
};
someService.fnA($scope.arg1) // fnA doesn't return anything
    .then(function () {
        return someService.fnB($scope.arg2, $scope.arg3()) // fnB returns some, e.g. string
    })
    .then($scope.parseSomeString); // this shorthand is great!

我想做的是这样的事情:

someService.fnA($scope.arg1)
    .then(someService.fnB($scope.arg2, $scope.arg3())) // but of course, this just calls the function; not good
    .then($scope.parseSomeString); // this shorthand is great!

有没有办法将参数$scope.arg2$scope.arg3()绑定到fnB

您可以使用function.bind(查看旧浏览器的支持和填充程序)传入带有参数的绑定函数引用,以便在调用函数时将参数绑定到该函数。

someService.fnB.bind(this, $scope.arg2, $scope.arg3);

如果不需要设置特定上下文(看起来没有),也可以将null作为第一个参数传递,如果需要,可以将该上下文作为第一个自变量传递。

尝试:-

someService.fnA($scope.arg1)
.then(someService.fnB.bind(this, $scope.arg2, $scope.arg3)) // but of course, this just calls the function; not good
.then($scope.parseSomeString); // this shorthand is great!

你也可以使用angular.bind

someService.fnA($scope.arg1)
  .then(angular.bind(this, someService.fnB, $scope.arg2, $scope.arg3))...

类似地,你会在你可能已经使用的库中找到类似的方法,比如Lodash/underlinehasbind,jquery has$.proxy等。

相关内容

  • 没有找到相关文章

最新更新