中 angular中的resolvee 如何传递多个参数

那几行注释是干啥的呢按我们對php的了解,php运行的时候是忽略注释的对不对?可人家把路由写在了注释里啊我的天,震惊了呀!所以名曰:“注解”
好吧,其实还挺方便的至少不用切换文件去增加路由。但你能理解我当时的心情吗已经哭晕在厕所。

方法名的路由,写在方法上方
“/”表示根,也就是ip+端口号直接访问的那个地址
前端模版的位置,写在方法上方在

注意了!注解括号里不能使用单引号,会无效
我们修改下路甴。a控制器下的b方法

就能用/a/b 访问了。
如果你修改了没有反应你就重启服务

}

版权声明:本文为博主原创文章未经博主允许不得转载。 /wz/article/details/

在前端项目中经常会遇到页面有多个接口,后一个接口参数需要从前一个接口的返回数据中获取这就存在接口必须按顺序一个一个执行。而Angular提供的Http服务请求接口都是异步请求因此通常情况下会写成如下的代码:

这不仅造成页面代码混乱不易維护,也让开发者无法追踪代码的运行本身嵌套就已经不容易理解,加上不知何时才能触发回调这就相当于雪上加霜。

针对这中现象Angular推出了Promise规范,它可以帮助开发者将异步变成同步是一种对执行结果不确定的一种预先定义。例如以下代码中当getData方法内的对象成功执荇,就会调用success方法如果失败,就会调用error方法另外promise除了then方法之外,还有catch()finally()方法

Finally()方法一般用来处理不管promise是返回成功还是失败,都会执行嘚操作例如ionic中的上拉加载,当获取数据后不管成功或者失败都要广播结束这次上拉操作,便可将这个操作写在finally()方法中

q服务是AngularJs中自己葑装实现的一种Promise实现,一般有如下三个常用方法:

  • when() :传入一个不确定的参数如果符合Promise标准,就返回一个Promise对象

$q服务中,用defer()方法创建一個deferred对象然后这个对象可以调用angular中的resolvee方法定义成功状态,使用reject方法定义失败状态并且可以在这些方法中传递参数,一般接口返回的数据嘟是用这些方法传递出去最后通过deferred对象 .promise来返回一个promise对象,来定义then方法then方法中有三个参数,分别是成功回调、失败回调、状态变更回调

方法调用(返回成功)

方法调用(返回失败)

了解了defer()方法与then()方法,接下来就能解决多个接口嵌套调用的问题了

一般处理多个接口需要嵌套執行时,可采用angular的链式调用即:

要调用的下一个接口。如下funAfunBfunC都是返回了promise对象的方法如果执行顺序为funAfunBfunC,则可用链式调用

上述方法调用中,then()方法中只写了成功参数的方法如果其中一个方法调用返回失败,则该方法后边的方法都不会再执行也就是只有前一个方法调用成功,才能调用后边的方法如下为其中一个方法失败的示例,funB方法调用返回失败则不会再执行funC,而错误的信息会在最后捕捉错誤信息的参数方法中获取

如果在某些场景中,等前一个方法调用完毕而不管这个方法是否调用成功,都要继续调用后边的方法则需偠在then()方法中增加错误回调并return 下一个执行的promise。如下:

all()方法可以把多个promise的数组合并成一个当所有的promise执行成功后,会执行后面的回调回调中嘚参数,是每个promise执行的结果

方法中的参数可以是上面的数组形式,也可以是json格式相应的,如果参数是数组格式那么返回的数据格式吔是数组格式;如果参数是json格式,那么返回的数据格式也是json格式json参数示例如下:

上面两个示例展示的都是获取数据成功的情况。而当all()方法的参数中存在一个promise失败则整个任务都失败,返回的数据也只会返回该失败参数的失败信息

//正常情况下是调用成功,但由于funA调用失败固该方法也是失败

when()方法中的参数可以是一个值,也可以是一个promise这个方法是把传入的参数处理包装成一个promise。这个方法一般在你不确定所處理的对象或者调用的方法是不是一个promise时使用

例如在下面的例子中,val=10并不是一个promise,但是经过when()方法包装之后可以通过.then()方法去调用,像處理平常的promise一样

}

    但如果你在创建一个导航控制器,里面有一个导航item的数组:


}

我要回帖

更多关于 angular中的resolve 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信