江の 发布的文章
Node fs模块Error: EACCES: permission denied
Error: EACCES: permission denied, scandir '/'
at Object.readdirSync (node:fs:1451:3)
尝试给文件夹777权限未解决
问题原因:npm 出于安全考虑不支持以 root 用户运行,即使你用 root 用户身份运行了,npm 会自动转成一个叫 nobody 的用户来运行,而这个用户几乎没有任何权限。
解决:在termux中只有一位用户无法解决 在正常linux中新建高权限用户解决
你好!2023!
过年自拍
Promise用法
function sum(a, b, cb) {
cb(a + b);
}
// sum(111, 222, (result) => {
// console.log(result);
// console.log(111);
// });
// 异步调用必须要通过回调函数来返回数据 进行复杂调用会出现回调地狱
/**
* 问题 异步必须通过回调函数返回结果 回调函数一多出现问题
* promise解决问题
* promise:用来存储数据的一个容器 拥有一套特殊的存取数据的方式
* 使得它可以存储异步调用结果
*/
// 创建promise
// 创建promiSee需要一个函数作为参数
// promise构造函数的回调函数会在创建promise时调用
// 调用时会有两个参数
// const promise = new Promise((resolve, reject) => {
// // resolve reject 是两个函数 可以向promise中存数据
// // resolve 在执行正常是存储数据 reject在执行错误是存储数据
// // 通过函数向promise添加数据好处就是可以用来添加异步调用的数据
// // resolve('resolve')
// // throw new Error(111);
// reject('reject')
// })
// 从promise中读取数据
// 可以通过promise实例方法then来读取promise中存储的数据
// then需要两个回调函数作为参数 用来获取promise中的数据
// 通过resolve存的数据会掉用地一个函数 可以在第一个函数中写处理数据的代码
// 通过reject存储的数据或者出现异常时会调用第二个函数 可以在这写处理又一场的代码
// promise.then((result)=>{
// console.log(result);
// },(reason)=>{
// console.log(reason);
// })
// promise中有两个隐藏的属性
// PromiseResult:存的数据
// PromiseState:记录promise状态 只会改变一次
/**
* fulfilled
* rejected
* pending
*
*
* 流程 当promise创建时PromiseState初始值为pending
* 当通过resolve变为fulfilled调用then的第一个回调函数
* 当通过reject或出错时 变为rejected PromiseResult变为异常对象调用then的第二个回调函数
*
* 当我们通过then读取数据时相当于为promise设置两个回调函数
*/
const promise2 = new Promise((resolve, reject) => {
resolve("haha");
});
// console.log(promise2);
// promise2.then(result=>{
// console.log(result)
// },reason=>{
// console.log(reason);
// })
// catch与then类似但是只有一个回调函数
// 只会在rejected时执行 相当于.then(null,()=>{})
//
// promise2.catch(reason=>{
// })
// finally() 无论是reject或resolve都执行回调 但都不会接收到数据
promise2.finally(() => {
console.log("nothing stops me");
});
/**
* promise静态方法
* Promise.resolve()创建一个立即完成的promise
* Promise.reject(10)创建一个立即拒绝的promise
* Promise.all() 有一个报错就会返回错误
* Promise.allSettled() 无论错误与否都返回
* [
{ status: 'fulfilled', value: 579 },
{ status: 'rejected', reason: 'hahah' },
{ status: 'fulfilled', value: 46 },
{ status: 'fulfilled', value: 22 }
]
Promise.race() 返回最快的Promise对象
Promise.any()返回最快的完成的Promise对象 都报错才会catch
*/
function sum(a, b) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(a + b);
}, 1000);
});
}
// Promise.allSettled().then((r) => console.log(r));
Promise.any([sum(123, 456), sum(12, 34), sum(11, 11)])
.then((r) => console.log(r))
.catch((r) => console.log(r));