js笔记之Promise(二)
js笔记之Promise(二)1 Promise链Promise链的想法是通过.then处理程序链进行传递result。一个例子是这样的:
123456789101112131415new Promise(function (resolve, reject) { setTimeout(() => resolve(1), 1000); // (*) }).then(function (result) { // (**) console.log(result); // 1 return result * 2; }).then(function (result) { // (***) console.log(result); // 2 return result * 2; }).then(function (result) { console.log(result); // 4 return result * 2;}); ...
Python环境管理Poetry的使用
Python环境管理Poetry的使用
Poetry 是 Python 中依赖管理和打包的工具。他可以管理项目中的第三包的依赖(安装/更新)。T同时也提供了一个锁定文件以确保可重复安装,并且可以构建项目以供分发。
poetry的Python版本要求为 3.7+,且是多平台的。
1 安装 (在windows平台下)1.1 安装Poetry1(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
根据官网安装的提示:如果是在Microsoft Store上安装的python,需要将上面的py替换为python,但是我直接安装,提示 py : 无法将“py”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。必须要把py替换为python。
使用 poetry --version 检查版本, 如果提示版本号则安装成功。
1.2 更新Poetry1poetry self update
1.3 卸载Poetry1(Invoke-WebReq ...
js笔记之Promise(一)
js笔记之Promise(一)1 Promise 对象的构造器语法123let promise = new Promise(function (resolve, reject) { // executor(生产者代码,“歌手”)});
传递给Promise的函数被称为 executor,当 new Promise 被创建时,executor 会自动运行,它包含最终应产生结果的生产者代码。
函数的参数 resolve,reject 是由JS自身提供的回调,我们的代码仅在executor的内部,当executor得到的结果,无论早晚,他应该调用一下的回调之一:
resolve(value) —— 如果任务成功完成并带有结果 value。
reject(error) —— 如果出现了 error,error 即为 error 对象。
所以总结一下就是executor会自动运行并尝试执行一项工作,尝试结束后,如果成功则调用resolve,如果出现error则调用reject。
由new Promise 构造器返回的promise对象 ...
JS笔记之JS错误处理(二).md
JS笔记之JS错误处理(二)在我们开发的时候 经常需要我们自己定义的类来反应我们在程序中遇到的错误。比如在网络请求中我们是用HttpError,在操作数据库中我么使用DbError等等。
我们一般都会创建自己的自定义异常,他们都支持最基本的Error属性,例如 message、name、并且最好有stack。但是他们也有自己的属性,例如HttpError队形可能有一个statusCode属性。
JavaScript 允许将 throw 与任何参数一起使用,所以从技术上讲,我们自定义的 error 不需要从 Error 中继承。但是,如果我们继承,那么就可以使用 obj instanceof Error 来识别 error 对象。因此,最好继承它。
随着项目的增大,我们定义的异常,可能会越来越细分, 形成一个层次结构,例如:HttpTimeoutError 可能继承自 HttpError,等等。
1 扩展Error例如当我们读一个一个用户的信息的json数据,有时候即使JSON的数据格式是正确的,但是数据却不一定是是我们想要的得到的数据,可能会缺少些必要的数据。 ...
JS笔记之JS错误处理(一).md
JS笔记之JS错误处理(一)在编程中很难能够一次性写出完美的代码,错误确实经常性的,在JS中可以使用try…catch能够使我们捕获错误。
1 try…catch语法try…catch 结构由两部分组成:try 和 catch:
123456789try { // 代码...} catch (err) { // 错误捕获}
他的执行步骤是:
首先执行try…的代码。
如果第一步没有错误,则忽略catch(err)…的代码,跳过catch…的代码,执行try的末尾继续执行。
如果第一步错误,则try…停止执行,代码则跳转带catch(err)的开头,变量err(可以是任何名称)将包含一个error对象,该对象包含了所发生事件的详细信息。
所以 try…catch(err)… try后面的代码不会导致程序停止。一些例子:
1234567891011121314151617// 没有 error 的例子:显示 alert (1) 和 (2):try { console.log('开始执 ...
JS笔记之JS类(六)
JS笔记之JS类(六)在JS中类只能扩展一个类, 每个对象只能有一个[[prototype]],但是有些时候,会让人感到限制,例如我们有一个User类和一个EventEmitter类来实现事件生成,并且想将EventEmitter的功能添加到User类中,以便用户可以触发事件。
有一个概念可以帮我们, 叫做 mixins, 在维基百科中 mixin是一个可以被其他的类使用,而无需继承的方法的类。
换句话说就是 mixin 提供了一些特殊的方法,但是我们不单独使用它,而是用它来将这些行为添加到其他的类中,
1 一个Mixin实例在JS中构造一个mixin最简单的方法就是构造一个拥有使用方法的对象,以便我们可以轻松的将这些实用的方法合并到任何类的原型中。例如这个名为sayHiMixin的mixin用于给User添加一些语言功能。
12345678910111213141516171819202122// mixinlet sayHiMixin = { sayHi() { console(`Hello ${this. ...
JS笔记之JS类(五)
JS笔记之JS类(五)1 类检查 instanceofinstanceof 操作符用于检查一个对象是否属于某个特定的 class。同时,它还考虑了继承。
在许多情况下,可能都需要进行此类检查。例如,它可以被用来构建一个 多态性(polymorphic) 的函数,该函数根据参数的类型对参数进行不同的处理。
12345678910obj instanceof Class//如果 obj 隶属于 Class 类(或 Class 类的衍生类),则返回 true。例如:class Rabbit {}let rabbit = new Rabbit();// rabbit 是 Rabbit class 的对象吗?console.log( rabbit instanceof Rabbit ); // true
还可以与构造函数一起使用:
1234// 这里是构造函数,而不是 classfunction Rabbit() {}alert( new Rabbit() instanceof Rabbit ); // true
与内建的类一起使 ...
JS笔记之JS类(四)
JS笔记之JS类(四)1 私有的和受保护的属性和方法面向对象编程最重要的原则之一 —— 将内部接口与外部接口分隔开来。
在 JavaScript 中,有两种类型的对象字段(属性和方法):
公共的:可从任何地方访问。它们构成了外部接口。到目前为止,我们只使用了公共的属性和方法。
私有的:只能从类的内部访问。这些用于内部接口。
首先创建一个咖啡机类:
123456789101112131415class CoffeeMachine { waterAmount = 0; // 内部的水量 constructor(power) { this.power = power; alert(`Created a coffee-machine, power: ${power}`); }}// 创建咖啡机let coffeeMachine = new CoffeeMachine(100);// 加水coffeeMachine.waterAmount = 200;
现在咖啡 ...
JS笔记之JS类(三)
JS笔记之JS类(三)1 静态属性和方法使用字面量创建一个 静态方法:
12345class User { static staticMethod() { console.log(this === User); }}
或者是我直接给类的属性复制一个方法:
12345class User { }User.staticMethod = function () { console.log(this === User);};
通常,静态方法用于实现属于 整个类,但不属于该类任何特定对象的函数。
例如,我们创建一个article类,然后我们创建一个方法来比较这个article,通常的方案就是添加一个静态方法。
1234567891011class Article { constructor(title, date) { this.title = title; this.date = date; ...
JS笔记之JS类(二)
JS笔记之JS类(二)1 类的继承, 使用“extends” 关键字语法
12345class Child extends Parent { someMethods(){ console.log('继承'); }}
例如:
1234567891011121314151617181920212223242526272829// 构建一个动物类,有动物的一些方法属性,class Animal { constructor(name) { this.speed = 0; this.name = name; } run(speed) { this.speed = speed; console.log(`${this.name} runs with speed ${this.speed}.`); } stop() ...