2 回答

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
你的箭頭函數(shù)立即執(zhí)行,并且無(wú)條件返回另一個(gè)函數(shù),而不是承諾!
const getData = () => (dispatch => new Promise(...))
getData()是一個(gè)函數(shù),所以.then它不存在。
自己嘗試一下
console.assert(typeof getData() !== "function", "`.then` doesn't exist on a function");
老實(shí)說(shuō),這段代碼應(yīng)該刪除調(diào)度回調(diào)并讓被.then調(diào)用者使用處理程序,這就是承諾的用途。
const getData = async () => {
const data = await apiService.getByParameter(abc);
return update(data);
});

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
getData
返回一個(gè)需要調(diào)度參數(shù)的函數(shù)。如果你調(diào)用該函數(shù),那么你就會(huì)得到一個(gè)承諾。
const dispatch = useDispatch(); const myPromise = this.getData()(dispatch);
請(qǐng)注意最后一行中的空括號(hào),后跟以調(diào)度作為參數(shù)的調(diào)用()(dispatch)
換句話說(shuō),getData
創(chuàng)建一個(gè)可用于創(chuàng)建 Promise 的 thunk。
const thunkFunction = getData();const myPromise = thunkFunction(dispatch); myPromise.then(...)
添加回答
舉報(bào)