首页 > 解决方案 > 使用 pnp/sp 的 Promise 问题

问题描述

我正在 SPFX 中构建应用程序定制器,并且正在使用 pnp/sp 从 Sharepoint 列表中获取数据——到目前为止一切都很容易。我已经想出了这样的代码,但它只是返回 [object promise] 这是我的代码,任何帮助都会很棒。

我这样调用函数:

public emailAddressGetter = this.GetSharePointData();

我试图显示这样的输出:

${escape(this.emailAddressGetter.toString())}

这是我正在执行的承诺:

  private async GetSharePointData(): Promise<any>
{ 
    let myVar : string;
    var resultData: any = await sp.web.lists
                               .getByTitle('Emails')
                               .items                                     
                               .select('EmailAddress')
                               .getById(99)
                               .get().then((r => {
   myVar = r.EmailAddress;
                         }));                            
    console.log(myVar);
    return myVar;

}

任何帮助将不胜感激,我知道我快到了:) 谢谢大家

标签: javascripttypescriptpromise

解决方案


我认为你GetSharePointData返回一个 Promise,因为它有async declaration,所以你需要异步执行代码并等待结果。代替:

public emailAddressGetter = this.GetSharePointData();

${escape(this.emailAddressGetter.toString())}

尝试:

this.GetSharePointData()
  .then(res => {
    // res here is myVar
    ${escape(res.toString())};
  });

推荐阅读