没事多喝水

技术笔记&记录生活点滴

  • 首页
  • 读书
  • 观影
  • 笔记
  • 读书笔记
  • Android学习
  • 生活
  • 吹口琴
  • 爱咖啡
  • IT技术-文档
  • 日常桌面
  • 数据库
  • CI/CD运维
  • Android开发
  • 小程序&微网页
  • Web开发
  • 产品
  • 教学
  • 安卓
  • 关于
  • 标签
  • 搜索

Generator的一些想法

发表于 2019-05-10 | 分类于 学习笔记

Generator 看了一下午,想明白了就是一个能存储当前某一刹那状态的函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

//特殊的函数用*标记
function* fn5(){
var x=1;
while(x) {
yield(x++);
}
}

//定义后,每次next()会再yield之前运行停止,下一次调用就从yield后运行至下一个yield之前

var c = fn5();

console.log(c.next().value); // 1
console.log(c.next().value); // 2
console.log(c.next().value); // 3

可以用这种暂停作为异步的执行,当异步执行时候暂停,等到异步停止后,用next()继续执行

结合之前的Promise,可以在异步中这样执行。

  1. 建立一个Promise,并设定resolve和reject函数
  2. yield停在Promise实例对象前
  3. 实例化yield相关的函数,执行next,然后value中返回的实例化的promise中执行操作

具体代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

/**
* Generator+ Promise组合
*/
var url = "'http://httpbin.org/get'";


var test = url=> {
return new Promise(function(resolve,reject){
request(
url,
function(err, response, body){
if(!err && response.statusCode == 200) {
resolve(body);
}else {
reject(err);
}
}
);
});
}

var fh7 = function* () {
let result = yield test('http://httpbin.org/get');
}
var e = fh7();
var p = e.next().value;
p.then((data)=>{
console.log(data);
});

对于学习目前的一些想法-想到什么说什么。

发表于 2019-05-09

学习都是从碎片开始,目前学的语言都是从主干部分,现在学,慢慢再丰富枝干部分。边学边做,以完成任务的为学习目的,然后再基于主干的知识,根据手册资料,慢慢扩展。

promise用法

发表于 2019-05-09 | 更新于 2019-05-10 | 分类于 学习笔记

原本层层嵌套改为多个then和catch连写的方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
var  request = require('request');
var url = "'http://httpbin.org/get'";

function test(url) {
// 语法检查
"use strict";

return new Promise(function(resolve,reject){
request(
url,
function(err, response, body){
if(!err && response.statusCode == 200) {
resolve(body);
}else {
reject(err);
}
}
);
});
}



test('http://httpbin.org/get')
.then(function(value){
return value;
})
.then(function(value){
// console.log(22222);
// console.log(value);
})
.catch(function(value){

});




//语法糖方式

var prom = Promise.resolve(

//返回的是promise对象,这里远程get方式无法调用
request(url,function(err, response, body){})
);

prom.then(function(value){
// console.log(value.uri);
});

// 只要抛错误就直接调用catch
function task1() {
console.log('task1');
throw new Error('error test');
}
function task2() {
console.log('task2');
}
function err() {
console.log('err');
}
var prom = Promise.resolve('aaaaa');
// prom.then(task1).then(task2).catch(err);

npm 使用

发表于 2019-05-09 | 更新于 2019-05-10 | 分类于 学习笔记

https://www.npmjs.com/中搜索

  1. 安装一些第三方库
1
2
3
4
5
6
7
8
9
10
11
//本地安装,安装到项目目录下,不在package.json中写入依赖
npm install packageName

//全局安装,安装在Node安装目录下的node_modules下
npm install packageName -g

//安装到项目目录下,并在package.json文件的dependencies中写入依赖,简写为-S
npm install packageName --save

//安装到项目目录下,并在package.json文件的devDependencies中写入依赖,简写为-D
npm install packageName --save-dev

目前一般只是用 –save版本

  1. 安装后引入
1
2

var 变量名称 = require('类库名称');

我的nodejs配置

发表于 2019-05-09 | 更新于 2019-05-10 | 分类于 学习笔记
涵盖了基本安装+sublime的配置
  1. nvm、npm、node环境安装

基本都是老生常谈的内容,主要还是用cnpm、cnvm等,用国内的阿里的源安装。之前尝试了brew安装方式。但发现nvm默认是没有安装,再弄也比较麻烦。正好有需要学习一下,就uninstall完直接安装了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 官网直接安装
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash\n

# 切换国内源

vim ~/.zshrc

# 增加npm源
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

# 增加npm别名,当然也可以用阿里源的直接安装

alias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"
  1. sublime 配置

主要用到的Nodejs、JSHint Gutter 2个插件。Nodejs用来build代码,也就是command+b用到那个。JSHint则用来语法的校验。

nodejs build 安装

  • command+shift+p,搜索nodejs安装
  • package setting->settings-User
  • 设置node和npm的位置,如果不知道那个位置可以用which npm来确认
1
2
3
4
{
"node_command": "/Users/mini/.nvm/versions/node/v12.2.0/bin/node",
"npm_command": "/Users/mini/.nvm/versions/node/v12.2.0/bin/npm"
}

jshint插件

jshint 有点像python的中的书写规范,通过修改配置可以设定不同的书写规范并加以校验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

# 安装

npm install -g jshint
command+shift+p,搜索jshint gutter安装

# 配置

package setting->setting-options

{

"node_path": {
"windows": "C:/Program Files/nodejs/node.exe",
"linux": "/usr/bin/nodejs",
"osx": "/Users/mini/.nvm/versions/node/v12.2.0/bin/node"
},

"lint_on_edit": false,

"lint_on_edit_timeout": 1,

"lint_on_load": false,

// 保存时检测
"lint_on_save": true,

//高亮选中的部分
"highlight_selected_regions": true,

// 通过`.jshintrc`.配置
"print_diagnostics": true
}

package setting->line-code

# 我改的不多几乎是用默认的,也是懒得折腾那么多。毕竟这个可以通过之后的学习在逐步理解。

{

"browser": true,
"esnext": true,
"globals": {},
"strict": "global",
"undef": true,
"unused": true,
//增加对es5的支持
"es5": true,
"node": true,
}

刚开始学我也不想枝节上扯太多,还是重点在语言本身,感觉和小程序的写法有相似的地方,不过也是,不都是js嘛 –!

从这里开始

发表于 2019-05-08 | 更新于 2019-05-09
刚开始写

希望有不错的开始,不太想用evernote的版本。如果不被墙,基本就选择这里。

<i class="fa fa-angle-left" aria-label="上一页"></i>1…1213
Space Yuan

Space Yuan

126 日志
26 分类
72 标签
RSS
<i class="fa fa-fw fa-github"></i>GitHub <i class="fa fa-fw fa-envelope"></i>E-Mail
© 2018 – 2022 Space Yuan