Git Product home page Git Product logo

promises-book's Introduction

Promises Book Build Status Gitter chat

Promises迷你书电子版(中文版)

在这里http://liubin.github.io/promises-book/ 可以在线阅读。

也可以从这里http://liubin.github.io/promises-book/javascript-promise-book.pdf 下载PDF版。

你还可以从这里https://gumroad.com/l/javascript-promise 免费下载本书的附录,也可以自己设定价格购买,本附录记录了本书诞生的经纬。

如果你想捐赠的话,可以到这里

关于作者

关注浏览器、JavaScript先关的最新技术。

擅长将将目的作为手段,本书也是因此而成。

管理着个人主页 Web ScratchJSer.info

关于译者

  • liubin

    • 除去kakau和honnkyou的其余部分的翻译、整体校对,以及源代码,工具部分的翻译
  • kaku

    • 1.1. Promise是什么、1.2. Promise 简介、1.3. 编写Promise代码
  • honnkyou

    • 3.1. 基本测试

Installation

本书采用Asciidoc格式编写。

可以使用Asciidoctor构建本书电子版。

编译为HTML

(sudo) gem install asciidoctor coderay
(sudo) npm install -g gulp
npm install
rbenv rehash # 如果你是使用rbenv的话。
make html
open index.html

编译为PDF(中文版)

执行命令(OS X下):

make cn-pdf

如果你想修改字体,可以直接替换_tools/build_cn_pdf.sh里的STKaiti为你想要的字体。

注意:,如果出现java.lang.OutOfMemoryError错误的话,设置一下JVM参数再进行make即可:

export JAVA_OPTS="-Xms512m -Xmx512m"

编译为PDF(日语版)

本书字体使用了VL Gothic Font Family。 该字体可以从VL Gothic Font Family下载,并需要进行安装。

所需软件

git submodule update --init
make pdf
open javascript-promise-book.pdf

编译为Epub

由于本书还不是特别完善,因此质量会很一般。 HTML版在智能机等小画面尺寸的设备上也能很好的展现,所以推荐大家使用HTML方式阅读。

gem install specific_install
gem specific_install -l https://github.com/opendevise/asciidoctor-epub3
asciidoctor-epub3 -D output index.adoc

Contributing

欢迎各种Pull Request和Issue。

也可以到这里Gitter chat 留言。

在Pull Request的时候请先参考 CONTRIBUTING.md

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

License

随书代码以MIT许可证发布。

图书内容则遵循Creative Commons Attribution-NonCommercial许可证。

Creative Commons License

promises-book's People

Contributors

azu avatar forehalo avatar genie88 avatar gunyarakun avatar honnkyou avatar kaku87 avatar liubin avatar lwxyfer avatar stonexer avatar syoichi avatar tricknotes avatar vzvu3k6k avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

promises-book's Issues

第一章 1.1 “发祥”词汇表达不准确?

1.1 什么是Promise
...
Promise是抽象异步处理对象以及对其进行各种操作的组件。 其详细内容在接下来我们还会进行介绍,Promise并不是从JavaScript中发祥的概念。
...

对于发祥一词不是特别理解,是否可以理解为发明
本人不懂日语,不知道能否帮忙解惑?

错别字

1.1. 什么是Promise
在使用promise进行一步处理的时候,我们必须按照接口规定的方法编写处理代码。
一步 to 异步?

TimeoutError 需要使用 new 来创造

URL : http://liubin.org/promises-book/#race-delay-timeout

我们定义了 TimeoutError 类和构造函数,这个类继承了Error的prototype。 它的使用方法和普通的 Error 对象一样,使用 throw 语句即可,如下所示。 下面的代码块,

var promise = new Promise(function(){
    throw TimeoutError("timeout");
});

promise.catch(function(error){
    console.log(error instanceof TimeoutError);// true
});

应该是 throw new TimeoutError("timeout")

Promise.all 的promise是为什么是并行执行的

Promise.all 那个chapter中,有写到:传递给 Promise.all 的promise并不是一个个的顺序执行的,而是 同时开始、并行执行的。不是很理解这个部分。
js是单线程的,难道不应该是并发的么?

Promise.all 是在所有promise对象都变为resolve或者只要有一个变为reject时,才会去调用`.then` !

原文:
Promise.all 接收一个 promise对象的数组作为参数,当这个数组里的所有promise对象全部变为resolve或reject状态的时候,它才会去调用 .then 方法。

而实际上应该是:
Promise.all 是在所有promise对象都变为resolve或者只要有一个变为reject时,才会去调用.then

先抛出警告:2,再输出:p3
    var p1 = Promise.resolve(1);
    var p2 = Promise.reject(2);
    var p3 = new Promise(function(resolve, reject) {
        setTimeout(function() {
            console.log('p3')
            resolve(3);
        }, 500);
    });

    p3.then(function(res) {
        console.log('p3')
    });

    Promise.all([p1, p2, p3]).then(function(res) {
        console.log(res)
    }, function(err) {
        console.warn(err)
    });

错别字一枚

111页,关于作者后面:
“关注浏览器、JavaScript先关的最新技术。”
应该是“相关”,不是“先关” :)

1.2在这种情况下 catch 的回调函数并不会被执行(因为promise返回了resolve), 不过如果运行环境没有提供 setTimeout 函数的话,那么上面代码在执行中就会产生异常,在 catch 中设置的回调函数就会被执行。

URL : http://liubin.org/promises-book/#promises-overview

setTimeout(function () {
resolve('Async Hello world');
}, 16);

在1.2中有句话产生歧义,“在这种情况下 catch 的回调函数并不会被执行(因为promise返回了resolve), 不过如果运行环境没有提供 setTimeout 函数的话,那么上面代码在执行中就会产生异常,在 catch 中设置的回调函数就会被执行。” 文中“没有提供 setTimeout ”对于一般阅读的人的感觉就是取消掉代码块中的setTimeout这个函数。哈_哈 强迫症你懂的

Typo

URL : http://liubin.org/promises-book/#_
本书的一本分章节将会以Node.js环境为背景进行说明,如果你有Node.js基础的话,那么一定会非常容易理解这部分内容了。

一本分 ==> 一部分

Typo - Proise

前言 - 写作初衷 - 最后一段的第一个 Promise 写成了 Proise

错别字

URL : http://liubin.org/promises-book/#__2
本书的一本分章节将会以Node.js环境为背景进行说明,如果你有Node.js基础的话,那么一定会非常容易理解这部分内容了。
应该是“一部分”而非“一本分”

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.