试试 promise.all 和 promise.race 写法,可以简化不少,你上面的例子可以这样写:
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values);
});
// expected output: Array [3, 42, "foo"]
等等全部请求完成后再处理
自己写一个 hook:
export function usePrevious<T>(value: T) {
const ref = useRef<T>();
useEffect(() => {
ref.current = value;
}, [value]);
return ref.current;
}
使用:
const Index = (props) => {
const prevProps = usePreVious(props);
useEffect(() => {
// do something
}, [props, prevProps]);
return <div/>;
};
这个网站上有很多 hook 的例子,可以学习一下。