AntD 学习到的小技巧
记录一些小技巧
- Promise,它的核心奥义是什么?是 resolve 与 reject.例如下面经典的用法.最为核心的就是代码里面的resolve, reject这两个方法。 Promise 就是一个链路,它是有各种 then,then,then 连起来的,规定好了调用顺序,然后呢,链路的触发点就是这个resolve,reject方法的调用,只要调用,整个链路就会按规则执行,然后整个链路就结束了。就像放爆竹,resolve,reject 就是引信,点完就没了,没法控制与改变它了。
new Promise((resolve, reject) => {}).then(success, failed);
用法来自与 rc-motion 这个组件, 里面有个 useStepQueue 与 useState 这两个 hook,代码如下:
//useStepQueue
const result = callback(step);
if (result === SkipStep) {
setStep(nextStep);
} else {
nextFrame((info) => {
function doNext() {
if (info.isCanceled()) return;
setStep(nextStep);
}
if (result === DoStep) {
doNext();
} else {
//注意这一行,result 来自与下面的方法调用
Promise.resolve(result).then(() => doNext());
}
});
}
// useState
if (nextStep === STEP_PREPARE) {
const onPrepare = eventHandlers[STEP_PREPARE];
if (!onPrepare) {
return SkipStep;
}
// 这个方法会返回一个Promise
return onPrepare(getDomElement());
}
// PopupInner
//这里返回一个Promise, 但是Promise 里面并没有执行什么异步操作,只是把resolve 存了下来。然后再将来的某个时间调用,这样就一路执行下去, PopupInner -> useState -> useStepQueue, 这个就是链路的顺序。
function onShowPrepare() {
return new Promise((resolve) => {
prepareResolveRef.current = resolve;
});
}
// 例如
prepareResolveRef.current(123);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构