Leo editor在python下的开发即将结束

Leo 要停止开发了 早上在邮件列表里面读到EKR的一封信: Leo 6.6 may be the last substantial release in Leo’s history. At present, the 6.6 to-do list contains five items. There are no items at present on the 6.7 to-do list. Many open items remain, but I have little desire to do any of them. Expect 6.6 final in a month or so. The leojs project now seems like the future of Leo. Indeed, it melds Leo with vs code, an unbeatable combination imo. ...

2022年2月19日 · 1 分钟

JavaScript的异步执行机制

回顾: JavaScript语言定义的 callback, promise, await, asyc JavaScript/NodeJS 引擎(libuv) 操作系统IO多路复用(epoll). 了解 JavaScript 异步函数的运行和实现机制,方便阅读和调试JavaScript代码。 1. 简介 对于习惯了线程池/多进程/消息队列的程序员,使用JavaScript/NodeJS,有几个概念需要了解。 Callbacks, Promises, Async Await IO多路复用和异步访问 2. Callbacks, Promises, Async Await Youtube有个视频Async JS Crash Course - Callbacks, Promises, Async Await, 用24分钟把这几个概念演示的很清楚。 Callback是最基本的,但是Callback有一个问题,在写异步函数的时候,需要把callbank函数作为参数传进去。 如果这个函数本身是个异步函数,它也有一个callback函数作为参数。如果层数很多,就产生了callback hell。 函数可读性很差。 为了解决这个问题, Promise引入了一层封装, 在定义异步函数时候不需要指明callback函数了。 可以在Promise定义后再: 通过then来定义执行成功后的回调 通过catch定义执行异常情况下的回调 Async Await是对Promise的进一步封装。让异步函数看起来象同步函数(不再需要Promose里面的then来显式定义回调)。 下面抄自google官方文档 async function myFirstAsyncFunction() { try { const fulfilledValue = await promise; } catch (rejectedValue) { // … } } 如果在函数定义之前使用了 async 关键字,就可以在函数内使用 await。 当您 await 某个 Promise 时,函数暂停执行,直至该 Promise 产生结果,并且暂停并不会阻塞主线程。 如果 Promise 执行,则会返回值。 如果 Promise 拒绝,则会抛出拒绝的值。 ...

2022年2月12日 · 2 分钟