您好,我是新来响应js的人,我正在调用getItem函数并将响应推送到一个数组并返回该数组,但是在返回之前我得到的是空数组
private _LoadExpenses() {
const items: IExpense[] = [];
this._expensesDataProvider.getItems().then((expenses: IExpense[]) => {
expenses.forEach(element => {
items.push({SGDDAppDate:element.SGDDAppDate,ExpenseCategory:element.ExpenseCategory,ExpenseType1:element.ExpenseType1});
});
return expenses;
});
//console.log(items)
return items;
}
您在退还费用之前需要console.log(items);
并且如果您以后需要返回项目,则用户u可以将代码包装在Promise中并返回Promise,那么每次需要使用项目时,都必须使用.then,例如此示例=> https://codesandbox.io/s/kind-rhodes-w1twf
因为一旦“ this._expensesDataProvider”运行,然后将运行“返回项目”,并且此时项目为空。
private async _getListData(): Promise<IReactItem[]> {
return pnp.sp.web.lists.getByTitle("TestList").items.select("Id,Title,Description,User/ID,User/EMail").expand("User").get().then((response:IReactItem[]) => {
return response;
});
}
调用函数:
this._getListData().then(items=>{ console.log(items); });
为您的代码。尝试:
private _LoadExpenses(): Promise<IExpense[]> { return this._expensesDataProvider.getItems().then((expenses: IExpense[]) => { return expenses; }); }