自定义 fetch() 在 Office 加载项中不起作用

Custom fetch() not working in Office Add-in

我要获取以下自定义函数

function myfunction(){
  fetch('https://api.jokes.one/jod?category=animal')
  .then((response) => {
    return response.json();
  })
  .then((myJson) => {
    return JSON.stringify(myJson);
  });
}

取完数据后,我想把它们插入到word文档中:

export async function run() {
  return Word.run(async (context) => {

    var a = myfunction();

    const paragraph = context.document.body.insertParagraph(a, Word.InsertLocation.end);

    await context.sync();
  });
}

但是当我尝试启动开发服务器以运行代码时,word文档中没有插入任何数据。有什么我错过的吗?我怀疑这是一些像 CORS 一样的配置设置(我不太确定为什么)。如果有详细的解释就更好了谢谢

当后面的代码行 运行 时,您的 myfunction() 未完成。需要加上await关键字,这样下一行代码会一直等到函数完成,像这样:

var a = await myfunction();

另外,您需要用async关键字定义myfunction(),这样您就可以等待它了。

response.json() 更依赖于一个promise结构,所以你必须再调用一次。

function myfunction(){
  fetch('https://api.jokes.one/jod?category=animal')
  .then((response) => {
    response.json().then(result => {
    return result;
    })      
  })
}