简体中文 | English
scpoProce 全称 Scpos Process,即为幻想私社用以解决困扰社员二百万年的高深异步编程问题而开发的一个跨时代的类:幻想私社过程类。
本项目灵感来源于 ES6 的Promise
,可用来减小异步编程带来的复杂性。
还可配合await/async
,方便程度更上一层楼。
本项目既可用于 Node.js 的开发,也可用于前端 HTML 页面中的脚本,最高可兼容 IE5(也就是 ES3 )。
-
const scpoProce = require('scpo-proce'); // 或 import scpoProce from 'scpo-proce';
-
<!--[if IE]><script src="scpo-proce/es3.js"><![endif]--> <script src="scpo-proce/main.js"></script> <!--[if IE]></script><![endif]-->
/// <reference path="scpo-proce/global.d.ts" /> console.log(scpoProce);
-
本项目有些地方与 ES6
Promise
不同。 例如Promise.then
是一个微任务,但本项目的ScpoProce.then
不是。 有时候放在ScpoProce.then
里的回调会像被同步执行一样。setTimeout(() => console.log(1)); new Promise((resolve) => { console.log(2); resolve(); }).then(() => { console.log(3); }); console.log(4); // Promise.then 是异步微任务 // 控制台输出 2431
import scpoProce from 'scpo-proce'; setTimeout(() => console.log(1)); scpoProce((resolve) => { console.log(2); resolve(); }).then(() => { console.log(3); }); console.log(4); // scpoProce.then 不是微任务 // 控制台输出 2341
- 挺方便。
- 性能貌似比
Promise
高啊,有点神奇,也不知道为什么。 - 回调抛出错误时,错误追踪里有太多异步类相关的函数,看不清到底哪里出错了。
Promise
就不会出现这个问题,可能因为它不是用 JS 代码实现的吧。
-
本项目其实是把 Scpos Web-Request 的代码加强后制作而成的。 如果你是编写 HTML 文档,建议使用对网络请求支持更多的 Scpos Web-Request,其中包括更诡异的参数传递、更全面的的预设配置等。
(但是已经二百年没更新过了)