Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript SharePoint框架&;打字稿&;等待所有承诺完成后再返回客户_Typescript_Sharepointframework - Fatal编程技术网

Typescript SharePoint框架&;打字稿&;等待所有承诺完成后再返回客户

Typescript SharePoint框架&;打字稿&;等待所有承诺完成后再返回客户,typescript,sharepointframework,Typescript,Sharepointframework,我有一个问题,就是在将价值返回给客户之前,要等待承诺得到解决 let promisesMethods:any = []; formatedResponse.value.forEach((item:ISPList) => { let listName:string = item.Title; promisesMethods.push(this._getListItems(listName))

我有一个问题,就是在将价值返回给客户之前,要等待承诺得到解决

let promisesMethods:any = [];
               formatedResponse.value.forEach((item:ISPList) => {
                  let listName:string = item.Title;
                  promisesMethods.push(this._getListItems(listName));
               });
               Promise.all(promisesMethods).then((result:any) => {
                  console.log("Here");
               });
               console.log("Here 1")
               return formatedResponse;
我正在使用SharePoint框架从配置列表中获取列表和文档库名称的集合,然后使用这些名称(列表和文档库名称)回调SharePoint以检索每个列表和文档库的列表项

以下是我的代码,用于检索用于检索列表项的列表和文档库的名称:

private _getListData(): Promise<ISPLists> {
    let listName:string = "SPListDisplayUIConfig";
    let currentUrl      = this.context.pageContext.web.absoluteUrl + `/_api/web/lists/GetByTitle('`+listName+`')/Items`;
    var formatedResponse: ISPLists = { value: [] };
    return this.context.spHttpClient.get(currentUrl, SPHttpClient.configurations.v1)
           .then((response: SPHttpClientResponse) => {
             //Extract the response.json object.
             return response.json().then((responseFormated: any) => {
              //Evaluate the response.               
              responseFormated.value.map((object: any, i: number) =>{
                var listItems: ListObjects = { value: [] };
                var spListItem: ISPList = {
                    Id: object['ID'],
                    Title: object['Title'],
                    DisplayListTitle: object['DisplayListTitle'],
                    RowCount: object['RowCount'],
                    SortOrder: object['SortOrder'],
                    ShowOnHomePage: object['ShowOnHomePage'],
                    ListType: '',
                    ListItems:  listItems
                };
                formatedResponse.value.push(spListItem); 
               });
               //Create a local list and store all the this._getListItems(Title) calls into the array, then pass the local array into the Promise.all method to execute each
               //method. In the return result (then), extract each list item and store into the spListItem.ListItem property.
               let promisesMethods:any = [];
               formatedResponse.value.forEach((item:ISPList) => {
                  let listName:string = item.Title;
                  promisesMethods.push(this._getListItems(listName));
               });
               Promise.all(promisesMethods).then((result:any) => {
                  console.log("Here");
               });
               console.log("Here 1")
               return formatedResponse;
             })
           })
   }
这是This.\u getListItems定义:

private _getListItems(ListName: string): Promise<ListObjects>{
      let currentUrl = this.context.pageContext.web.absoluteUrl + `/_api/web/lists/GetByTitle('`+ListName+`')/Items`; 
      return this.context.spHttpClient.get(currentUrl, SPHttpClient.configurations.v1)
           .then((response: SPHttpClientResponse) => {
             return response.json().then((responseFormated: any) => {
              var formatedResponse: ListObjects = { value: []};  
              responseFormated.value.map((object: any, i: number) =>{
                var spListItem: ListObject = {
                          Title: object['Title'],
                          ItemUrl: "",
                          ItemType: "",
                          FileType: "",
                          Id: object['ID']
                 };
                 formatedResponse.value.push(spListItem);
               });

               return formatedResponse;
             })
           })
   }

谢谢

只需在
然后
块中继续您的代码,在外部块中,将与此
然后
块对应的承诺返回给调用者。大概是这样的:

  private _getListData(): Promise<ISPLists> {
    let listName:string = "SPListDisplayUIConfig";
    let currentUrl      = this.context.pageContext.web.absoluteUrl + `/_api/web/lists/GetByTitle('`+listName+`')/Items`;
    var formatedResponse: ISPLists = { value: [] };
    return this.context.spHttpClient.get(currentUrl, SPHttpClient.configurations.v1)
           .then((response: SPHttpClientResponse) => {
             //Extract the response.json object.
             return response.json().then((responseFormated: any) => {
              //Evaluate the response.               
              responseFormated.value.map((object: any, i: number) =>{
                var listItems: ListObjects = { value: [] };
                var spListItem: ISPList = {
                    Id: object['ID'],
                    Title: object['Title'],
                    DisplayListTitle: object['DisplayListTitle'],
                    RowCount: object['RowCount'],
                    SortOrder: object['SortOrder'],
                    ShowOnHomePage: object['ShowOnHomePage'],
                    ListType: '',
                    ListItems:  listItems
                };
                formatedResponse.value.push(spListItem); 
               });
               //Create a local list and store all the this._getListItems(Title) calls into the array, then pass the local array into the Promise.all method to execute each
               //method. In the return result (then), extract each list item and store into the spListItem.ListItem property.
               let promisesMethods:any = [];
               formatedResponse.value.forEach((item:ISPList) => {
                  let listName:string = item.Title;
                  promisesMethods.push(this._getListItems(listName));
               });
               return Promise.all(promisesMethods).then((result:any) => {
//             ^^^^^^
                  console.log("Here");
                  // Any more necessary processing
                  return /* whatever result you want */;
               });
             })
           })
   }
private\u getListData():承诺{
让listName:string=“SPListDisplayUIConfig”;
让currentUrl=this.context.pageContext.web.absoluteUrl+`/_api/web/lists/GetByTitle(“`+listName+`')/Items`;
var formattedresponse:ISPLists={value:[]};
返回此.context.spHttpClient.get(currentUrl,spHttpClient.configurations.v1)
.然后((响应:SPHttpClientResponse)=>{
//提取response.json对象。
返回response.json().then((responseFormatted:any)=>{
//评估反应。
responseFormatted.value.map((对象:any,i:number)=>{
var listItems:ListObjects={value:[]};
变量spListItem:ISPList={
Id:object['Id'],
标题:对象['Title'],
DisplayListTitle:object['DisplayListTitle'],
RowCount:object['RowCount'],
SortOrder:object['SortOrder'],
ShowOnHomePage:object['ShowOnHomePage'],
列表类型:“”,
ListItems:ListItems
};
格式化的Response.value.push(spListItem);
});
//创建一个本地列表并将所有this.\u getListItems(Title)调用存储到数组中,然后将本地数组传递到Promise.all方法中以执行每个调用
//方法。在返回结果(然后)中,提取每个列表项并存储到spListItem.ListItem属性中。
让承诺方法:任意=[];
FormattedResponse.value.forEach((项目:ISPList)=>{
让listName:string=item.Title;
promisesMethods.push(this._getListItems(listName));
});
返回承诺。全部(承诺方法)。然后((结果:任意)=>{
//             ^^^^^^
console.log(“此处”);
//还有什么需要处理的吗
返回/*您想要的任何结果*/;
});
})
})
}
  private _getListData(): Promise<ISPLists> {
    let listName:string = "SPListDisplayUIConfig";
    let currentUrl      = this.context.pageContext.web.absoluteUrl + `/_api/web/lists/GetByTitle('`+listName+`')/Items`;
    var formatedResponse: ISPLists = { value: [] };
    return this.context.spHttpClient.get(currentUrl, SPHttpClient.configurations.v1)
           .then((response: SPHttpClientResponse) => {
             //Extract the response.json object.
             return response.json().then((responseFormated: any) => {
              //Evaluate the response.               
              responseFormated.value.map((object: any, i: number) =>{
                var listItems: ListObjects = { value: [] };
                var spListItem: ISPList = {
                    Id: object['ID'],
                    Title: object['Title'],
                    DisplayListTitle: object['DisplayListTitle'],
                    RowCount: object['RowCount'],
                    SortOrder: object['SortOrder'],
                    ShowOnHomePage: object['ShowOnHomePage'],
                    ListType: '',
                    ListItems:  listItems
                };
                formatedResponse.value.push(spListItem); 
               });
               //Create a local list and store all the this._getListItems(Title) calls into the array, then pass the local array into the Promise.all method to execute each
               //method. In the return result (then), extract each list item and store into the spListItem.ListItem property.
               let promisesMethods:any = [];
               formatedResponse.value.forEach((item:ISPList) => {
                  let listName:string = item.Title;
                  promisesMethods.push(this._getListItems(listName));
               });
               return Promise.all(promisesMethods).then((result:any) => {
//             ^^^^^^
                  console.log("Here");
                  // Any more necessary processing
                  return /* whatever result you want */;
               });
             })
           })
   }