遵循方法有效:
$q.when()
.then(checkCookieToken) // check if cookie already exists e.g. in cookie
.then(setHeader) // set Header with REST-Token e.g from cookie
.then(checkTokenOnline) // if not OK logout
.then(getMenu) // if previous OK get navigation menu
.then(getDataResource) // set ngResource
.then(getData); // and query it
4个问题:
1)如果例如checkTokenOnline
不好,我不想执行其余的功能,那我该如何退出(退出,中断,什么,..)?
2)我如何设置其中一些并行,其中一些串行?
3)如何在它们之间传输数据?
4)如何使以下函数从其先前结果中得到依赖?
您在问如何在promise中 链接 功能。
3)如何在它们之间传输数据?
4)如何使以下功能取决于其先前的结果?
返回 链中 下一个函数的数据(或promise):
var p2 = p1.then ( function (data) {
var nextData = someFn(data);
return nextData;
});
var p3 = p2.then ( function (nextData) {
var nextData2 = someOtherFn(nextData);
return nextData2;
});
//return for further chaining
return p3;
1)如果例如checkTokenOnline不能正常运行,我不想执行其余功能,那么如何在这一点上退出(退出,中断等)。
要 拒绝 承诺,请让您的函数 抛出 错误。链将跳过所有.then
方法,直到您提供错误处理程序。
var p2 = p1.then ( function checkTokenOnline (response) {
if ( isBadFn(response) {
throw error;
} else {
return nextData;
}
}) .then ( someFn
) .then ( someOtherFn
) .catch ( function (error) {
// someFn and someOtherFn skipped
//log error
throw error;
});
//return for further chaining
return p2;
2)我如何设置其中一些并行,其中一些串行?
要使两个功能并行运行,请做出两个承诺。使用$q.all
等待他们俩来完成。
var p1 = $q.when ( fn1() );
var p2 = $q.when ( fn2() );
var p3 = $q.all ( [p1, p2] );
var p4 = p3.then ( function (responseList) {
var response1 = responseList[0];
var response2 = responseList[1];
return something;
}). catch ( function (error) {
//log error
throw error;
});
//return for further chaining
return p4;
请注意,这$q.all
没有 弹性 。如果任何承诺引发错误,.then
则将跳过该方法,并且仅第一个错误将进入该.catch
方法。
函数式编程的经验法则 总是返回一些东西 。
问题内容: 在promise库 Q中 ,您可以执行以下操作以顺序链接promise: 但是,以下命令不适用于 $ q : 问题答案: 只需使用$ q.when()函数: 注意:foo必须是工厂,例如
问题内容: 我有一个抽象基类,用作我的单元测试(TestNG 5.10)的基础。在该类中,我将初始化测试的整个环境,设置数据库映射等。此抽象类具有一个带有注释的方法,该方法可以进行初始化。 接下来,我用具有方法和方法的特定类扩展该类。这些方法对环境进行类特定的初始化(例如,将一些记录放入数据库中)。 如何执行带注释的方法的特定顺序?我需要先执行抽象基类中的那些,然后再执行扩展类中的那些。 例: 预
问题内容: 我正在开发一个使用angular作为客户端框架的应用程序,目前使用angular作为岩石,我真的很高兴,尽管现在我发现我经常复制和粘贴要组织成类层次结构的代码。例如,对话框共享一组通用的功能,需要打开,关闭它们,提供功能的代码也是从某些父BaseTypeaheadClass继承的首选对象,尽管我在angular中没有发现的一件事是组织这些层次结构。控制器,服务和提供者都在下面使用普通的
该程序的输出: 是: 为什么当 开始时 不是 1?
我有一个问题,我无法通过谷歌搜索找到解决方案。 我有一个库,我正在使用它(不想编辑,除非真的有必要),它允许用户选择一个项目,然后调用我的自定义回调函数来修改该项目,然后继续使用它。 我需要在上面执行一些异步任务,这可能需要一些时间。这将创建一个竞争条件,因为当回调函数完成时,我的异步任务尚未完成,并且库继续其对项的工作。 如何等待我的两个异步任务完成,然后允许这个回调完成? 我唯一能想到的就是每
问题内容: 指令功能的执行顺序是什么?该文档似乎没有解决此问题。 防爆 template / templateUrl(已评估) 控制器 编译 链接 从下面的答案中:http ://plnkr.co/edit/79iyKSbfxgkzk2Pivuak(插件显示嵌套和兄弟指令) 模板被解析 (在编译中对模板所做的更改会扩展到链接功能) 问题答案: 预链接功能:在链接子元素之前执行。执行DOM转换并不安