在SPFx中发出批量请求的问题

时间:2018-04-24 12:37:57

标签: sharepoint sharepointframework

欢呼男人和女孩。

从SPFx向SP批量处理请求时出现问题。

一些背景知识:SP结构有一个包含大量子网站的网站集。每个子网站都有一个列表,其名称在所有子网站上都相同。我需要访问所有这些列表。

正常的SPHttpClient调用为我提供了所有网站的网址。到现在为止还挺好。

然后计划批量调用以从列表中获取数据。不幸的是,我只能从其中一个电话中得到答案。其余的批处理调用给了我" InvalidClientQueryException"。如果我改变了呼叫的顺序,似乎只有第一次呼叫成功。

const spBatchCreationOptions: ISPHttpClientBatchCreationOptions = {
     webUrl: absoluteUrl
};

const spBatch: SPHttpClientBatch = spHttpClient.beginBatch(spBatchCreationOptions);

// Add three calls to the batch
const dan1 = spBatch.get("<endpoint1>",SPHttpClientBatch.configurations.v1);
const dan2 = spBatch.get("<endpoint2>",SPHttpClientBatch.configurations.v1);
const dan3 = spBatch.get("<endpoint3>",SPHttpClientBatch.configurations.v1);

// Execute the batch
       spBatch.execute().then(() => {

            dan1.then((res1) => {
                return res1.json().then((res10) => {
                    console.log(res10);
                });
            });

            dan2.then((res2) => {
                return res2.json().then((res20) => {
                    console.log(res20);
                });
            });

            dan3.then((res3) => {
                return res3.json().then((res30) => {
                    console.log(res30);
                });
            });
 });

所以在这种情况下只有调用dan1成功。但是,如果我将call2更改为具有与第一次调用相同的端点,则它们都会成功。

我无法真正地围绕这一点,所以如果有人有任何意见,我将非常感激。 //丹

1 个答案:

答案 0 :(得分:0)

确保每一批您的端点始终是同一站点。您不能在一个批次中混合使用不同的站点。在这种情况下,只有来自同一站点的第一个呼叫会成功。 为了克服这个问题,如果您想检索信息(可以在同一站点URL上执行的操作),可以切换到搜索呼叫。 有关更多信息,请参见我的blogpost