阿毛Alex - 2020年12月18日
type: channel
link: https://alexmao.com/index.php/2020/12/18/
description: 生命不息，折腾不止
items: 如何添加系统变量
items: 下载安装mongodb
items: 对Promise, resolve, reject, async, await的理解

如何添加系统变量
type: item
date: 2020-12-18T08:20:00+00:00
description: 教程在这里

下载安装mongodb
type: item
date: 2020-12-18T07:42:00+00:00
description: 由于官网提供的云数据库实在是太难连接了，能连上的时候反应特别慢，有时候根本就不能连接，所以迫不得已自己安装一个mongodb数据库试试吧。下载资源安装教程这个教程比较简单一点安装过程中，被卡在这里了：2020-06-14T10:52:32.000+0800 I SHARDING [ftdc] Marking collection local.oplog.rs as collection version: <unsharded>按照网上查的教程，说新建一个powershell然后启动mongo命令就可以了，可是我TM的不行啊，崩溃了！安装这个东西太麻烦了，简直不想弄了。2020.12.18更新一下，解决了https://cloud.mongodb.com提供免费数据库无法连接的问题，其实是因为我用的个人热点导致IP地址发生了变化，在后台把现在的IP加入白名单就可以了。所以暂时先不安装mongodb了，等解决了目前的问题再继续吧。2020.12.21上午今天把前后端分离这个case搞定了，但是发现mongodb.com这个云数据库服务真是太慢了，点一下修改数据库再返回数据，需要好几秒钟，简直没有办法忍受，所以可能还是得自己把mongodb本地安装搞定，要不然真没法用。2020.12.21下午后来发现，其实我的mongodb本地竟然已经安装好了……设置了系统变量了之后，就可以直接使用mongo命令进入操作数据库了。我把node.js链接数据库的地址改成mongodb://127.0.0.1:27017/dbname，竟然就能够连上了！太让人惊喜了。当然后面肯定还会有用户和权限的设置要做，这个后面再学，现在至少我那个前后端分离的简单项目能在本地数据库跑了。

对Promise, resolve, reject, async, await的理解
type: item
date: 2020-12-18T06:21:00+00:00
description: 之前刚刚开始接触node.js的时候就看了一段视频讲同步异步的，看得一头雾水，对这几个单词充满了疑问，看别的视频的时候看到别人新手敲进去，也不知道是为了什么，这两天才好好地研究了一下。不得不说选择视频真的是太重要了，同样的人来讲解一个事情，有些人讲了听得明白，有些人讲了也还是听不明白，有些人只需要讲10分钟，有些人讲了40分钟，也不一定是视频的人讲得不好，每个人的学习都要依靠自己目前的知识体系，只有能和自己的知识网络联系起来，才可能学得会。这次就是在Youtube上学的，一个叫Hitesh Choudhary的印度老哥讲的，视频只有12分钟，不过还是听明白了，下面讲一下的自己的理解。以下正文开始Promise，async和await一般是在请求资源的时候使用，因为请求资源的时候，对方给过来的反馈一般会比较慢（相对于继续执行后面的程序而言），这时候一般需要做一个设置，那就是等对方的反馈回来了之后再执行后面的程序，不过如果没有特别设置，js是不会这么做的，这时候如果有3个方法，中间那个需要请求，不做设置的话，第二个还没有等到拿到请求结果就输出了，结果就是undefined，因为没有拿到任何东西。举例： 执行上面的代码，two()会输出undefined，因为该方法需要3秒才能执行完，但是由于没有设置，还没有执行完就返回了，结果就是undefined。那么，如何才能让run()按顺序执行one() two() three()呢？一共分两步：第一步：在two()里面返回一个Promise，将two()改成：function two () { return new Promise((resolve, reject) => { setTimeout(() => { resolve('I am two') }, 3000) }) } 这段代码里，一个Promise会返回两个状态，resolve或者reject，基本上可以理解为success和error，在resolve里填写如果反馈成功后要返回的东西即可。第二步：调用的时候设置要async和await当你在定义一个类似run()方法时，如果这里面涉及到需要等待结果的方法（比如请求资源的），这时候要在这个方法前面加上async，表示这是一个包含异步请求的方法，然后在里面具体的需要等待结果的方法前面，加上await，也就是说，需要等这个方法获得了返回结果之后，再继续往下面执行。所以run()就可以改成这样： function run () { console.log(one()) console.log(two()) console.log(three()) } 这时候，整体代码变成这样： 再执行的话，就会发现one()先出结果，等3秒后，two()出结果，紧跟着three()的结果也出来了。这个就是promise, resolve, reject, async, await的最基础知识了吧，写出来加深一下理解，如果有初学者能看到，也许也可以获得一些启发。更复杂的知识，参考这里。