2019-10-17 Daily Report

概览

林空色暝莺先到,春浅香寒蝶未游。

时间:Thursday, October 17, 2019 09:30 AM

作者:Syncher Pylon


  • Promise 基本使用
  • Promise/A+ 规范解读
  • 学习算法
  • 学习英语

今日笔记

通过 Promise 构造函数创建 Promise 模板:

1
2
3
4
5
6
7
8
9
const promise = new Promise(function(resolve, reject) {
// ... 异步代码

if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});

案例:读取 package.json 文件

1
2
3
4
5
6
7
8
9
10
const fs = require("fs");
const package = new Promise(function(resolve, reject) {
fs.readFile("package.json", function(err, contents) {
if (err) {
reject(err);
return;
}
resolve(contents);
});
});

Promise.then 方法接收两个参数,第一个是当 Promise 状态变成 resolved 时调用的函数,与异步操作状态相关的附加数据都会传递给这个完成函数 (fulfillment function);第二个是当 Promise 状态变成 rejected 时调用的函数,叫拒绝函数 (rejection function)。

1
2
3
4
5
6
7
package.then(function(contents) {
// resolved
console.log(contents);
}, function(err) {
// rejected
console.log(err);
});

使用 catch 函数处理 Promise 的 rejected 状态

1
2
3
4
5
package.then(function(data) {
console.log(data);
}).catch(function(err) {
console.log(err);
})

如果 resolve 返回的是一个新的 Promise,则 p1 的状态决定 p2 的状态

1
2
3
4
5
6
7
8
const p1 = new Promise(function (resolve, reject) {
// ...
});

const p2 = new Promise(function (resolve, reject) {
// ...
resolve(p1);
});

Promise 链的式调用返回一个值

1
2
3
4
5
6
7
8
9
10
const p1 = new Promise(function(resolve, reject) {
resolve(42);
});

p1.then(function(val) {
console.log(val);
return val + 1;
}).then(function(val) {
console.log(val); // 43
});

Promise 链式调用返回一个 Promise

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const p1 = new Promise(function (resolve, reject) {
// ...
resolve(42);
});

const p2 = new Promise(function (resolve, reject) {
// ...
resolve(43);
});

p1.then(function(val) {
console.log(val);
return p2;
}).then(function(val) {
console.log(val);
})

算法学习笔记

英语学习笔记

  • eventaul: in the end, especially after a long delay, dispute, or series of problems.
  • conform: comply with rules, standards, or laws.

本文标题:2019-10-17 Daily Report

文章作者:Syncher

发布时间:2019年10月17日 - 09:10

最后更新:2019年10月18日 - 18:10

原始链接:https://0x400.com/2019-10-17-diary-2019-10-17.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。