rxjs Observable 设计原理背后的 Pull 和 Push 思路
Observables 顾名思义,是可以被观察的事务。在 Rxjs 的上下文里,Observable 会随着时间的推移,在某个时间点产生数据。 Observables 可以: 不停地(永远)产生值,比如 interval 操作符。可以一次性生产价值,然后进入 complete 状态。可能会产生错误,然后进入 complete 状态。 Observable 是一种异步事件的实现利器,例如单
关于 SAP UI5 OData V4 模型的 refresh 方法
SAP UI5 OData V4 模型包括下列三种绑定实例: List BindingContext BindingProperty Binding 无论哪种类型的数据绑定实例,其创建的数据服务请求,这些绑定实例都会设计一个缓存,来存储数据服务响应的数据。 如果可以从此缓存中提供数据,这些绑定实例不会再次发送数据服务请求。 应用开发人员可以使用 refresh 方法删除绝对绑定的缓存。
Rxjs map, mergeMap 和 switchMap 的区别和联系
map、mergeMap 和 switchMap 是 RxJS 中的三个主要运算符,在 SAP Spartacus 开发中有着广泛的使用场景。 mapmap 是 Observables 中最常见的运算符。 它的作用与数组中的映射相对相似。 map 接收从 Observable 发出的每个值,对其执行操作并返回一个 Observable(因此 Observable 链可以继续)。 把它想象成一个
Rxjs mergeMap 的使用场合
注意: flatMap 是 mergeMap 的别名。如果一次只能激活一个内部订阅,请使用 switchMap.如果内部 observables 的发射和订阅顺序很重要,请使用 concatMap. 当需要展平内部 observable 但想要手动控制内部订阅的数量时,是 mergeMap 极佳的使用场合。 例如,当使用 switchMap 时,每个内部订阅在源发出时完成,即任意时间段只
给 Angular 服务器端渲染应用设置一个渲染超时时间
我们用 setTimeout 模拟一个需要 5 秒钟才能完成调用的 API: const express = require('express'); const app = express(); app.get('/api/fast', (req, res) => { console.log('fast endpoint hit&#
如何使用 Restful ABAP Programming 编程模型开发一个支持增删改查的 Fiori 应用
Restful ABAP Programming 编程模式是 ABAP 这门编程语言在不断向前进化的过程中,诞生的一门新的编程模型,简称为RAP模型。该模型定义了一套架构体系,应用开发人员能够凭借其来高效地进行应用的端到端开发,这种应用具有与生俱来的Restful特质,能充分利用HANA平台的强大计算能力,支持云环境和Fiori UX。 RAP模型的三大支柱: Business Ser
云端的 ABAP Restful 服务开发以及通过 abapGit 传输到其他系统的详细步骤
在本地部署环境即 On-Premises 环境下,如果想将 ABAP Netweaver 里的资源以 Restful API 的方式暴露出来,SICF这个事务码绝对是一大利器。 我们只需要在SICF里合适的路径下创建节点,为该节点创建一个ABAP类,就可以专注于实现接口定义的方法IF_HTTP_EXTENSION~HANDLE_REQUEST, 在里面编写应用逻辑了。应用开发人员无需关注和操
一种基于事件驱动架构的 SAP 产品集成方案介绍
Kyma 是SAP开源的一个基于 Kubernetes 的云原生应用开发平台,能够允许SAP的partners以简捷而现代的方式,对SAP的云解决方案和传统On Premises产品进行连接,集成和扩展。所谓“现代”,即partners在进行二次开发时,可以充分利用近些年来企业级开发领域不断涌现出的新技术,比如Serverless计算,微服务架构等等。 Kyma是完全开源和免费的,任何人都可
云原生平台 Kyma 上创建的 Lambda Function 的技术实现细节介绍
在企业级开发应用进入云原生开发时代之后,Serverless 架构这个词也频繁出没于各大技术媒体里。 Serverless的字面意思容易给人以 不再需要服务器了 的误解。 站在整个企业的角度上讲,ABAP Netweaver 的 SICF 开发模式,和 Serverless 架构几乎没有任何联系,两者区别很大:一个是需要在部署于企业本地的服务器上编写函数代码,另一个则是直接在云服务提供商提供的
ABAP Code Inspector 的一些高级功能分享
ABAP Code Inspector 是每一位 ABAP 开发人员工具箱里必备的代码检测工具之一。使用 ABAP Code Inspector 自带的标准检查项,可以帮助开发人员快速检测 ABAP 代码中潜在的缺陷,提高代码质量,改善代码运行性能。 本文分享笔者从事 ABAP 应用程序开发十余年来在工作中积累的一些 ABAP Code Inspector 的使用经验。 我们可以在ABAP C
Rxjs TakeUntil 操作符的学习笔记
TakeUntil 的官方文档对这个操作符的解释是: Emit values until provided observable emits. 即它可以被赋予另一个起锚定作用的 Observable,当该锚定 Observable emit 值时,原始的 Observable 就停止发射值,进入 complete 操作。 看一个实际的例子: import { interval, t
基于 OData V2 的 SAP UI5 List-Detail(列表-明细)布局的实现方式试读版
一套适合 SAP UI5 初学者循序渐进的学习教程作者简介Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达 15 年的 SAP 标准产品开发生涯里,Jerry 曾经先后参与 SAP Business ByDesign, SAP CRM, SAP Cloud for Customer,
使用 RxJS timeout 操作符给 Angular SSR 渲染模式下的 HTTP 请求添加超时机制
Angular Universal 是一个开源项目,扩展了 @angular/platform-server 的功能。 该项目使 Angular 中的服务器端渲染成为可能。 为了在服务器上渲染,Angular 使用 node.js 的 DOM 实现——domino. 对于每个 GET 请求,domino 都会创建一个类似的 Browser Document 对象。 在该对象上下文中,Angul
关于 Angular SSR 应用在渲染中止时如何避免内存泄漏问题的一些尝试
当某些异步任务永远挂起时,SSR 渲染可能永远不会完成,例如http 调用后端 API。在 Angular Universal 中,默认情况下无法中止挂起的渲染。那么渲染的资源没有释放,会导致内存泄漏。当内存泄漏重复时,这可能最终导致服务器由于内存不足而重新启动。 我们已经采取了一些措施来改善渲染挂起时的监控体验 - 我们添加了配置 SsrOptimizationOptions.maxRende
Angular 如何通过 HTTP Interceptor 实现 HTTP 请求的超时监控
当开发人员在 Dynatrace 中查看这些请求时,将无法再看到超时后正在进行的 API 调用。 该过程在后台进行渲染,但 Dynatrace 看到返回给客户端的响应并停止记录,在这种情况下,如果能了解它正在做的事情需要这么长时间,对分析问题会更有帮助。 我们可以引入一个 Angular HTTP_INTERCEPTOR 来超时等待已久的网络请求,从而确保在服务器端引导的应用程序具有更短的生命周
关于 Spartacus 服务器端渲染出现 timeout 的一个具体例子的分析
Node Express server listening on http://localhost:4200 SSR rendering exceeded timeout 2000, fallbacking to CSR for /SSR rendering exceeded timeout 2000, fallbacking to CSR for /xyzSSR rendering excee
如何使用 Angular 服务器端渲染的 Transfer State Service
假设我们使用 Angular Universal 开发一个服务器端渲染的 Angular 应用,这个应用会消费一个第三方的 Restful API. 上述场景分为下列六个步骤: 用户向部署了 Angular 服务器端应用的 Node.js 服务器发起页面请求 Node.js 调用第三方 Restful API, 第三方 Restful API 返回结果,这个结果被用于渲染最后的页面
Angular 服务器端渲染应用一个常见的内存泄漏问题
考虑如下的 Angular 代码: import { Injectable, NgZone } from "@angular/core"; import { interval } from "rxjs"; @Injectable() export class LocationService { constructor(ngZone: NgZ
Angular 服务器端渲染应用的一个错误消息 - localStorage is not defined
在 Angular 应用开发中,我们在 TypeScript 代码里调用 localStorage. 它通过 key 从 local storage 中检索数据。 但是在服务器上,此代码崩溃并显示错误消息:ReferenceError: localStorage is undefined 在服务器上运行 Angular 应用程序时,全局空间中缺少标准浏览器 API. 例如,在服务器端渲
Angular 服务器端渲染应用的开箱即用的缓存功能问题
关于通过 Angular Universal 渲染出的页面源代码,我们有两种缓存方式: HTTP cache 使用网络缓存时,一切都是为了在服务器上设置正确的响应标头。 它们指定缓存生存期和缓存策略。一个例子如下: Cache-Control: max-age = 31536000 此选项适用于未经授权的区域和存在长时间不变数据的情况。 In Memory cache 内存缓存