<commit_before>---
layout: post
title:  Promise 是个好东西啊！
tags: js es6
---

基于 js 的异步计算，很多初学者往往忘记了其执行的滞后性，在结果尚未返回前就急于要获得其结果，忘记了需要 callback 才能正确获取异步过程的值。于是，渐渐熟悉该现象的人们开始熟练的运用起了 callback，愉快的接受着异步返回的值，直到有一天，他们不约~~儿童~~而同地陷入了一个叫“回调陷阱”的玩意儿里……
<!--more-->

以下是某绝密项目源码的最有一页，Like this：

```js
                    });
                  });
                });
              });
            });
          });
        });
      });
    });
  });
});
```

_（以下 demo 代码用 setTimeout 来模拟异步过程，用 ECMAScript 2015 语法编写）_

## 初学者的迷茫

一个初学者往往会写出以下代码来计算结果：<commit_msg>gh-pages: 错别字<commit_after>---
layout: post
title:  Promise 是个好东西啊！
tags: js es6
---

基于 js 的异步计算，很多初学者往往忘记了其执行的滞后性，在结果尚未返回前就急于要获得其结果，忘记了需要 callback 才能正确获取异步过程的值。于是，渐渐熟悉该现象的人们开始熟练的运用起了 callback，愉快的接受着异步返回的值，直到有一天，他们不约~~儿童~~而同地陷入了一个叫“回调陷阱”的玩意儿里……
<!--more-->

以下是某绝密项目源码的最后一页，Like this：

```js
                    });
                  });
                });
              });
            });
          });
        });
      });
    });
  });
});
```

_（以下 demo 代码用 setTimeout 来模拟异步过程，用 ECMAScript 2015 语法编写）_

## 初学者的迷茫

一个初学者往往会写出以下代码来计算结果：
{'fraction_non_alphanumeric': 0.15498154981549817, 'fraction_numerical': 0.00922509225092251, 'mean_word_length': 2.1818181818181817, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5314359', 'n_tokens_mistral': 676, 'n_tokens_neox': 745, 'n_words': 58}