angular - 如何在 Angular 的另一个请求中使用订阅的数据
问题描述
我有提交数据的请求。提交数据后,我会收到包含提交项目 ID 的响应。
该 ID 我已将其分配给变量。
现在,我需要在另一个发布请求中使用该变量。
当我尝试时,我可以看到 value 是空白的
this.sharepointService.createItem().subscribe( (response : Response) => {
this.lastItemCreatedId = response['d'].ID; // latitemcreated is a variable
console.log("Newly created Item ID :" + this.lastItemCreatedId)
})
现在我需要在另一个请求中使用 lastItemCreatedId
let url = "_spPageContextInfo.webAbsoluteUrl"+"_api/web/lists/getByTitle('List')/items('"+this.lastItemCreatedId+"')/AttachmentFiles/add(FileName='abc.txt')"
this.sharepointService.addAttachementstoItem(url).subscribe()
信息:以上两个是发布请求
如何在另一个发布请求中使用 lastItemCreatedID 变量值?
解决方案
由于这两个方法是一个接一个地调用,所以你应该使用 RxJS 的mergeMap操作符。
我们可以使用mergeMap
将 observables 映射createItem()
到内部 observable 中,随后将其分配为url
变量的一部分。然后,我们调用 addAttachementstoItem() 方法,在下一行的 subscribe() 中返回 observables。
import { mergeMap } from 'rxjs/operators';
this.sharepointService.createItem()
.pipe(
mergeMap((response : Response) => {
this.lastItemCreatedId = response['d'].ID;
let url = "_spPageContextInfo.webAbsoluteUrl"+"_api/web/lists/getByTitle('List')/items('"+this.lastItemCreatedId+"')/AttachmentFiles/add(FileName='abc.txt')"
return this.sharepointService.addAttachementstoItem(url);
}).subscribe(res => {
// do the rest here
})
推荐阅读
- servicenow - 如何从客户端脚本服务中调用脚本包含?
- flutter - 不良状态:视频播放器中没有元素抖动
- java - Xpath 表达式,用于在不使用 substring-before 或 substring 的情况下获取节点的子字符串
- vb.net - SQLite 在项目文件夹中使用本地数据库
- reactjs - 基本的 redux 概念 - 如何操作启动 reducer
- javascript - 如何在javascript中将动态ID放在复选框中?
- typescript - 如何在打字稿中结合其他功能键入功能
- python-3.x - 猴子修补列表子类在深度复制时导致无限递归
- scala - 在 Scala 2.13 中。如何在宏中可靠地记录信息/警告/错误?
- react-native - 为什么我不能使用多个反应上下文?