点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
这里的基本问题。 我很难尝试实现schema.js文件。 问题是,当我尝试使用某些异步功能(例如" await cds.read"或" SELECT.from ...")或任何异步功能时,我无法设法使其正常运行。 处理程序结束,并且只有在解决了Promise并且响应已经消失之后," await cds.read"运行之后的每个逻辑(我告诉过您这是一个基本问题)。
所以我从我们的好朋友DJ Adams找到了一个不错的博客:
https://blogs.sap.com/2019/08/21/computed-field-example-in-cap/comment-page-1
(我在此处发表评论)
DJ向我们展示了一个使我想做的事情的示例:实现后读取处理程序以进行异步调用(等待cds.transaction(req).run(SELECT .from(Books)...)并更改最终 响应基于此异步选择的结果,因此我实现了它,但正在发生奇怪的事情。奇怪的是,有时它填充了numberOfBooks属性,但大多数情况下却没有。我一直按一下刷新按钮, 有关更改结果的信息,以下是两个响应,一个接一个,没有重置或更改任何内容:
{
@ odata.context:" $ metadata#Authors",
值:[
{
ID:101,
名称:"艾米莉·布朗特",
书数:1
},
{
ID:107,
名称:"夏洛特·勃朗特",
numberOfBooks:null
},
{
ID:150,
名称:"埃德加·艾伦·坡(Edgar Allen Poe)",
书数:2
},
{
ID:170,
名称:"理查德·卡彭特",
numberOfBooks:null
}
]
}
(点击刷新...)
{
@ odata.context:" $ metadata#Authors",
值:[
{
ID:101,
名称:"艾米莉·布朗特",
numberOfBooks:null
},
{
ID:107,
名称:"夏洛特·勃朗特",
numberOfBooks:null
},
{
ID:150,
名称:"埃德加·艾伦·坡(Edgar Allen Poe)",
numberOfBooks:null
},
{
ID:170,
名称:"理查德·卡彭特",
numberOfBooks:null
}
]
}
您看到了吗? 埃德加·爱伦·坡(Edgar Allan Poe)第二次拥有2本书,却没有。 艾米丽只有一个,现在却没有。 其他人甚至没有第一次出现。 有时我会为所有这些人买书,有时会为一些人买书,但大多数时候却没有。 Straaaange…。
我非常怀疑这与我上面描述的异步/等待问题相同。
尽管我的安装存在一些问题(VSCode,nodejs,谁知道...),所以我在SAP Business Application Studio上进行了尝试,但结果却完全相同。 这样可以排除一些过时的软件包或其他软件包。
其他人看到过类似的东西吗?
您可以在这里找到我的代码:
https://github.com/ecassaro1/ws1/tree/master/p15
有什么建议吗?
我很确定我缺少一些非常基本的内容...
预先感谢,埃里克
Eric,你好
您必须将对Array.prototype.map()函数的调用包装到Promise.all()调用中:
在此处查看说明: https://flaviocopes.com/javascript-async- await-array-map/
亲切的问候,
塞巴斯蒂安
嗨,埃里克,
https://cap.cloud.sap/docs/node。 js/api#service-after 指出"仅允许同步修改。也就是说,不可能像下面两个示例中那样进行替换和异步修改"。 解决方案是"为了替换/异步修改结果,请在
on
处理程序上使用"。文档还解释了原因,为什么后期处理程序会受到这种限制。
亲切的问候,
塞巴斯蒂安
一周热门 更多>