首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Angular Then在递归函数上不触发Promise

是因为递归函数的执行过程中没有返回一个Promise对象,或者没有正确处理Promise的链式调用。

在Angular中,Promise是一种用于处理异步操作的对象,它可以通过链式调用的方式来处理异步操作的结果。在递归函数中,如果希望使用Promise来处理异步操作,需要确保每次递归调用都返回一个Promise对象,并正确处理Promise的链式调用。

以下是一个示例代码,展示了如何在递归函数中正确使用Promise:

代码语言:txt
复制
function recursiveFunction(n: number): Promise<number> {
  return new Promise((resolve, reject) => {
    if (n === 0) {
      resolve(0);
    } else {
      recursiveFunction(n - 1).then((result) => {
        resolve(result + n);
      }).catch((error) => {
        reject(error);
      });
    }
  });
}

recursiveFunction(5).then((result) => {
  console.log(result); // 输出15
}).catch((error) => {
  console.error(error);
});

在上述代码中,recursiveFunction是一个递归函数,它接受一个参数n,并返回一个Promise对象。在递归调用中,通过then方法处理上一次递归调用的结果,并将结果传递给下一次递归调用。当n等于0时,递归结束,通过resolve方法返回最终结果。

需要注意的是,以上示例代码中没有提及具体的腾讯云产品和产品介绍链接地址,因为在这个特定的问题中,并没有与腾讯云相关的内容。如果需要了解腾讯云的相关产品和服务,可以访问腾讯云官方网站或咨询腾讯云的客服人员。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

前端面试题库系列(4)

angular 双向数据绑定与vue数据的双向数据绑定 二者都是 MVVM 模式开发的典型代表 angular 是通过脏检测实现,angular 会将 UI 事件,请求事件,settimeout...从配置的entry入口文件开始解析文件构建AST语法树,找出每个文件所依赖的文件,递归下去。 解析文件递归的过程中根据文件类型和loader配置找出合适的loader用来对文件进行转换。...浏览器端,microtask 事件循环的 macrotask 执行完之后执行 递归的调用process.nextTick()会导致I/O starving,官方推荐使用setImmediate...angular 双向数据绑定与vue数据的双向数据绑定 二者都是 MVVM 模式开发的典型代表 angular 是通过脏检测实现,angular 会将 UI 事件,请求事件,settimeout...从配置的entry入口文件开始解析文件构建AST语法树,找出每个文件所依赖的文件,递归下去。 解析文件递归的过程中根据文件类型和loader配置找出合适的loader用来对文件进行转换。

1.3K10

新鲜出炉的8月前端面试题

模拟终止 当新对象保持“pending”状态时,原Promise链将会中止执行。...return new Promise(()=>{}); // 返回“pending”状态的Promise对象 promise 放在try catch里面有什么结果 Promise 对象的错误具有冒泡性质...angular 双向数据绑定与vue数据的双向数据绑定 二者都是 MVVM 模式开发的典型代表 angular 是通过脏检测实现,angular 会将 UI 事件,请求事件,settimeout 这类延迟...从配置的entry入口文件开始解析文件构建AST语法树,找出每个文件所依赖的文件,递归下去。 解析文件递归的过程中根据文件类型和loader配置找出合适的loader用来对文件进行转换。...递归完后得到每个文件的最终结果,根据entry配置生成代码块chunk。 输出所有chunk到文件系统。

1.1K31

进阶 | 重新认识Angular

结合特定的数据模型(regularjs中,是一个裸数据), 模板引擎层级游历AST并递归生成Dom节点(不会涉及到innerHTML)。...而Angular某种程度上替我们做了这样的工作,并提供我们使用。 Angular里面我们常常通过服务来共享一些状态的,而这些管理状态和数据的服务,便是通过依赖注入的方式进行处理的。...---- 核心思想: 数据响应式 Promise => 允诺 Rxjs => 由订阅/发布模式引出来 Promise顾名思义,提供的是一个允诺,这个允诺就是调用then之后,它会在未来某个时间段把异步得到的...Rx的数据是否流出取决于是否subscribe,也就是说一个observable未被订阅的时候也可以流出数据,之后它被订阅过后,先前的数据是无法被数据消费者所查知,所以Rx还引入了一个lazy模式...与其进行口水之争,取精辟,去糟粕,更是面向未来的方式吗? 参考 《Angular的变革》 《Angular2 脏检查过程》 《预 (AoT) 编译器》 扫码下方二维码, 随时关注更多前端干货文章!

2.5K10

Js 异步处理演进,Callback=u003EPromise=u003EObserver

第 2 种选择就是 JavaScript Callback 回调模式,等待客服回复的同时,可以做其它事情,一旦客服有空,会主动回电给你~ function success(res){ console.log...callApiFooC( resIds ) 的返回结果; switchMap — 使用函数 callApiFooC 的结果调用 callApiFooD; tap — 获取先前执行的结果,并将其打印控制台中...; subscribe — 开始监听 observable; Observable是多数据值的生产者,它在处理异步数据流方面更加强大和灵活,它在 Angular 等前端框架中被使用~~ 敲!...这写法,这模式不就是函数式编程中的子吗?Observable 就是被封装后的子,不断传递下去,形成链条,最后调用 subscribe 执行,也就是惰性求值,到最后一步才执行、消费!...=>Observer,重点理解也就是 Observer,Observer 就像是函数编程的子,封装、传递链、延迟执行,几乎一摸一样,不过它更加强调发布和订阅的思想!

2K10

angular5面试题_大数据面试题

兼容的(当然也有2个版本的集成方案)。...Angular提供了一种平滑的机制,通过它我们可以将这些依赖项注入我们的组件和指令中。因此,我们只是构建依赖关系,这些依赖关系可以应用程序的所有组件之间注入。...onPush策略,就是只有当输入数据的引用发生变化或者有事件触发时,组件才进行变化检测。 NgFor应该伴随trackBy方程使用。...可以取消,Promise不可以 如果提高Angular的性能 Angular也还是网页应用,所以一般的提高网页西能的技巧都是通用的。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

4.3K20

记一次前端大厂面试

优点,减少内存消耗,动态绑定事件 3. target 是触发事件的最具体的元素,currenttarget是绑定事件的元素(函数中一般等于this) 4....2. return new Promise(()=>{}); // 返回“pending”状态的Promise对象 Q: promise 放在try catch里面有什么结果 1....Q: angular 双向数据绑定与vue数据的双向数据绑定 1....二者都是 MVVM 模式开发的典型代表 2. angular 是通过脏检测实现,angular 会将 UI 事件,请求事件,settimeout 这类延迟,的对象放入到事件监测的脏队列,当数据变化的时候...从配置的entry入口文件开始解析文件构建AST语法树,找出每个文件所依赖的文件,递归下去。 4. 解析文件递归的过程中根据文件类型和loader配置找出合适的loader用来对文件进行转换。

1.3K70

TW洞见〡为什么你的Angular代码很难测试?

我在过去一段比较长的时候里都在项目上使用Angular感受到Angular带来的便利的同时,也饱受了Angular测试的折磨,因为我一直觉得Angular的单元测试很难写,跟JUnit+Mockito...我一直思考为什么Angular社区说Angular的测试性很高,但是项目上实现用起来却是另一番境地。...新的版本里面,我们只处理了业务逻辑,即判断一个邮箱地址是否合法,至于何时触发验证,验证失败或成功之后应该有怎样的样式,我们都统统交给了angular原生directive去处理了。...4 使用Promise处理Ajax的返回值, 而不是传递回调函数 Angular中所有的Ajax请求默认都返回一个Promise对象,建议将处理Ajax返回值的逻辑通过回调函数的形式传递给发送http...请求的service,而应该是调用service的地方利用返回的promise对象来决定如何处理。

1.5K30

AngularJS 1 教程

从使用角度来说脏检查 从性能角度来说脏检查 指令 directive,以及用指令写组件 Promise 为什么需要前端框架 随着浏览器性能提升,更多Web Page演变为Web App,特别是中大型的项目中...---- JS Bin on jsbin.com 同样的一个简单需求,可以明显看得出jQuery中业务代码,直接操作DOM代码揉杂一块,而Angular中JS代码关心业务逻辑,HTML描述界面非常的清晰...因此 限制不必要的监控数量,建议超过2000个 避免避免深度比较、复杂的逻辑。...扩展来说, **今天主流组件化的潮流之下,Angular 1完全可以依赖directive来按照component-based的方式书写框架,**甚至这点已经是目前Angualr 1社区中潮流用法:Component-Based...Promise Promise的相关可以通过这篇文章来看,译用漫画来解说AngularJs中的Promises 。

4.6K30

angular面试题及答案_angular面试

生命周期钩子 生命周期的顺序,见下图: ngOnChanges:当组件数据绑定的输入属性发生变化是触发,该方法接收一个SimpleChanges对象,包括当前值和上一个属性值。...首次调用一定发生在ngOnInit前,值得注意的是该方法仅限于对象的引用发生变化时才会触发。...Promise只处理一个事件 Observable可取消 Promise不可取消 14. AsyncPipe ?...ngOnInit : angular 第一次显示数据绑定和设置指令、组件的输入属性之后,初始化指令、组件 所以从angular的生命周期看,constructor是执行在先的 所以既然ngOnchanges...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

10.9K120

程序猿的今日头条面试历险记(一)

一面面试官小哥哥人超级 nice,问的问题偏基础,都是常见的前端面试题,由于本人技术栈为 Angular 以及 Vue,因此面试题涉及 React。...当浏览器接收到可以被 angular context 处理的事件时,$digest 循环就会触发。$digest 会遍历所有的 $watch。从而更新DOM。...注册:首先要在 JS 中进行注册 安装:注册完成之后,会触发 install,安装的过程中,如果所有需要离线缓存的静态资源都已经成功缓存,那么 Service Worker 就安装完成进入激活步骤,如果有文件下载失败或缓存失败...Promise 和 Rxjs 里面的 observe 有什么区别 当异步完成或者失败时,Promise 处理单个事件,observe 可以处理一个或者多个事件。...对于 Promise,不论在后面怎么调用 then,实际上的异步操作只会被执行一次,多次调用没有效果;但是对于 observable,多次调用 forEach 或者使用 retry 方法,能够触发多次异步操作

1.1K30

angular 中$q服务介绍

$q.defer()方法构造出的实例中,有一个promise属性,用来返回一个promise对象。 通过then方法,可以实现链式函数,来解决回调地狱的诟病。...all 接受多个promise 对象,待所有promise接收完毕时(必须是resolve 的),触发then中的回掉。...race 同样接受多个promise对象,但是只要promise响应即可,因此不论是resolve,或者rejected,都可以触发race的回掉。...因为race的机制就是只要有一个promise回来,就会触发接下来的任务,一次可以用来做超时的函数操作。...总结 JS中,解决异步模式问题的方法还有很多,比如回掉函数,事件监听,发布订阅等等,而angular的$q提供了一个轻量的promise库,虽然方法远没有Q库的丰富,但是基础方法都有,实用性较强,解决异步问题时

99950

【Hybrid开发高级系列】AngularJS(三)——开发实践

Yeoman之前,你需要确认以下配置: Node.js版本0.10以上 npm版本1.3.7以上         安装好Node之后,你就可以用命令行来安装Yeoman了。...版本,或者你可以直接安装0.7.1这个版本: $ npm install-g generator-angular@0.7.1 1.1.1.2 使用生成器搭建你的应用         你可以Yeoman...        }     }); 1.3.5 页面Loading生命周期事件     View Load Events视图加载事件 viewContentLoading- 当视图开始加载,DOM渲染完成之前触发...special property 'targetView'     // viewConfig.targetView  });     • viewContentLoaded-当视图加载完成,DOM渲染完成之后触发...angule js中ng-view中使用了ng-include,如何实现ng-include的这个页面刷新,外部的ng-view刷新 http://www.oschina.net/question/2356458

23420

深入理解函数式编程(下)

这里面有一个状态转换: 图 44 React Hooks给我们的启发是,副作用都被放到一个状态节点里面去被动触发,形成一个单向的数据流动。...图 51 到此,我们可以理解Monad为: 满足自子运算(从A范畴态射到A范畴,fmap是自己空间做映射)。 满足含幺半群的结合律。...其他的编程语言特性,函数式编程中也能找到对应的影子,比如循环结构,我们往往使用函数递归来实现。 3.5 IO的处理方式 终于到IO了,如果不能处理好IO,我们的程序是健全的。...IO类型让我们可以Monad空间处理那些烦人的副作用,这个Monad类型和Promise(限定副作用到Promise域处理,可链式调用,可用then折叠和映射)很像。 4....你仍然可以.then函数中写纯粹的函数,也可以.then函数中调用其他的Promise,这就和IO Monad的行为非常像。

89530

【单子】说白了不过就是【自子范畴】上的一个【幺半群】而已?请说人话!!

怕生词概念的同学先别慌,先告诉你 Monad 和 Promise 很像,增点亲切感; 浅尝 Monad 函数式编程中我们一直强调:纯函数、纯函数、纯函数!无副作用,无副作用,无副作用!...),把这些多出来的参数和返回值,掩盖类型里面。...bind,用于链接执行; Promise 等效于把函数进行包装,Promise.resolve 等效于把这个包装进行拆开,将为一个普通的值; 不过,Promise 都是 Monad,示例 Promise.resolve...,所以无法与外部进行 IO 操作,不能存在 a -> IO 或 IO -> a 这种操作,必须为 IO -> IO(Promise -> Promise),也就是必须为「自子」,async 函数中都是自子映射...,也就是一个「自子范畴」,那么相对的「幺半群」就是Promise了。

99820

基于 qiankun 的微前端最佳实践(万字长文) - 从 0 到 1 篇

如果你不懂 Vue 也没关系,我们搭建主应用基座的教程尽量涉及 Vue 的 API,涉及到 API 的地方都会给出解释。...触发主应用路由规则时(由路由配置表的 $route.name 判断),将渲染主应用的组件; 第 10 行:微应用渲染区。...的项目,命令行运行如下命令: ng new micro-app-angular 本文的 @angular/cli 选项如下图所示,你也可以根据自己的喜好选择配置。...micro-app 注册微应用 创建好了 Angular 微应用后,我们可以开始我们的接入工作了。...如果是多个 html 的多页应用 - MPA,则需要在服务器(或反向代理服务器)中通过 referer 头返回对应的 html 文件,或者主应用中注册多个微应用(推荐)。

6.4K40

深入理解函数式编程(下)

这里面有一个状态转换: React Hooks给我们的启发是,副作用都被放到一个状态节点里面去被动触发,行程一个单向的数据流动。...其他的编程语言特性,函数式编程中也能找到对应的影子,比如循环结构,我们往往使用函数递归来实现。 IO的处理方式 终于到IO了,如果不能处理好IO,我们的程序是健全的。...IO类型让我们可以Monad空间处理那些烦人的副作用,这个Monad类型和Promise(限定副作用到Promise域处理,可链式调用,可用then折叠和映射)很像。...可能的调用栈溢出问题 惰性计算在一些电脑或特种程序架构上可能有函数调用栈错误(超长调用链、超长递归),另外许多函数式编程语言需要编译器支持尾递归优化(优化为循环迭代)以得到更好的性能。...你仍然可以.then函数中写纯粹的函数,也可以.then函数中调用其他的Promise,这就和IO Monad的行为非常像。

44410
领券