当前位置: 首页 > 面试题库 >

如何在Angular.js中链接.then函数和回调成功函数

范彭亮
2023-03-14
问题内容

我正在尝试链接嵌套的.then函数并调用成功函数,但是回调是在开始本身中进行的。

    //public method fn
    function fn(callback) {
    //calling the 1st API request
    fn1()
      .then(function(response) {
        //2nd API request function
        call1(response);
      }, function(error) {
        return $q.reject({
        responseStatus: error.status
      });

      })
      // Returning response
      .then(function(response) {
        callback({
        responseStatus: 200
        });
      }, function(error) {
        callback({
          responseStatus: 500
        });
      });
    }

    function call1(response) {
      //2nd API
      fn2()
        .then(function(response) {
         //3rd API request function
            call2(response);
          }, function(error) {
            return $q.reject({
            responseStatus: error.status
          });
        });
    }


    function call2(response) {
      //3rd API request 
      fn3()
        .then(function(response) {
            return lastfunction();
          //here i need to callback the success  response status
          }, function(error) {
            return $q.reject({
            responseStatus: error.status
          });
        });
    }


    function fn1(){
     //some code 
     }
    function fn2(){
    //some code 
    }
    function fn3(){
    //some code 
    }

    //Controller

    //i will show response status callback here

    if(response.status ==200){
      show output;
     }
     else{
      //response 500
      show errors;
      }

基本上,我需要在所有服务调用成功时向其他控制器回调“200”响应状态,即使一个请求失败,我也需要发送“500”。我的代码“响应状态为200”正在使用第一个.then函数本身进行调用。我想将此服务电话称为que

任何帮助,将不胜感激。


问题答案:

您的{ responseStatus: x }对象仅出于流控制的目的而存在,可以自然地由; 返回的promise 的 成功路径 和 _错误路径_提供fn()

同样,有了promise,就没有必要将回调传递给fn()它了-实际上,这样做是一种不好的做法。

所以首先

  • 清除callback全部通过
  • 从每个底层函数返回一个承诺
  • 简化成功链接
  • 清除不必要的错误处理程序
    function fn() {
        return fn1().then(call1);
    }
    function call1() {
        return fn2().then(call2);
    }
    function call2() {
        return fn3().then(lastfunction);
    }
    function fn1() {
        //some code that returns a promise
    }
    function fn2() {
        //some code that returns a promise
    }
    function fn3() {
        //some code that returns a promise
    }

然后,调用如下:

    fn().then(function(response) {
        // success callback (your "200" condition)
        // show output;
    }).catch(function(error) {
        // error callback (your "500" condition)
        // show error;
    });

response变种会被任何lastfunction()交付。如果你想你的问题response是什么是带来了一些聚集fn1()fn2()fn3()不是由已经交付lastfunction()。这个问题在这里得到了全面解决。

errorVAR将是第一个Error在执行的过程中发生fn(),没有信息丢失;
error.messageerror.status(如果存在)可以读取/显示。



 类似资料:
  • 问题内容: 看来我无法访问jquery ajax成功函数内的$(this)。请参见下面的代码。 问题答案: 应该怎么办 如果在该函数之外有对它的引用,则可以将其存储到变量中。

  • 问题内容: 我想使用jQuery ajax从服务器检索数据。 我想将成功回调函数定义放在如下所示的代码块之外。因此,是否需要像下面这样声明变量,以便能够使用成功回调中返回的数据? 我已经看到大多数人在块内定义成功回调。如果我想在外部定义成功回调,那么以下代码正确吗? 问题答案: 只需使用: 该属性仅需要引用一个函数,并将数据作为参数传递给该函数。 由于声明的方式,您可以像这样访问您的函数。Java

  • 问题内容: 我有一个JavaScript Ajax调用(jQuery.ajax),它不执行成功回调函数。 我在firebug中看到,该请求已发布,并且按预期返回了有关json的正确结果。怎么了? 问题答案: 很多次,我都遇到过类似的问题,大多数时候,原因是json格式错误。尝试以文本数据类型获取结果,看看这是否是您的问题。 另外,我想问一下您是否使用了“&jsoncallback =?”之类的参数

  • 问题内容: 在我的前端JavaScript应用程序中,我发出了ajax请求以从服务器获取数据。一旦获得数据,我想将该信息返回给视图。 我该怎么做? 问题答案: 而不是从:返回来传递给函数。

  • 问题内容: 嗨,我有一个PHP代码返回一个数组。我希望能够在我的ajax成功函数中使用此数组,但是我不确定如何执行此操作。我尝试了以下方法,但是没有运气。 php代码: js代码: 问题答案: 您应该从服务器以JSON形式返回数据。 的PHP JS

  • 问题内容: 我有一个plsql函数,我想从我的函数中调用另一个函数。我怎样才能做到这一点? 这是正确的方法吗? 问题答案: 函数必须返回一个值,否则您应该具有该函数的分配目标。