@streamable标记一个store中的对象,如果对象 [[GET]] 为 null值,则抛出一个 promise。
@pending标记一个方法,这个方法里面是相关的慢接口 不参与promise.all中 在客户端的时候,会注入服务端的原始数据到方法的最后一个参数中。
@pending需要接受一个string作为参数
const map = new Map();
function pending(key: string) {
return (value, {kind}) => {
if(typeof window === 'undefined'){
return value();
}else {
// 流式数据好了之后根据key找到方法
map.set(key,[value]);
return;
}
};
}
// example
@pending('streamFetchTitle')
streamFetchTitle = async (d: string) => {
const data = d || (await new Promise((resolve) => {
setTimeout(() => {
resolve("fulfilled data");
}, 3000);
})) as string;
return data;
};