JavaScript Promiseの本 v2意図したテストを書くには ..... 58 Chapter.4 - Advanced ..... 62 Promiseのライブラリ ..... 62 Promise.resolveとThenable ..... 65 throwしないで、rejectしよう ..... 74 DeferredとPromise ..... 77 Promise.raceとdelayによるXHRのキャンセル のショートカットとして、promiseオブジェクトの初期化時やテストコードを書く際にも活用できます。 ## Thenable もう一つ Promise.resolve の大きな特徴として、thenableなオブジェクトをpromiseオブジェクトに変換するという機能があります。 ES PromisesにはThenableという概念があり、簡単にいえばpromiseっぽいオブジェクトのことを言います。 .length likeというのと同じで、thenableの場合は .then というメソッドを持ってるオブジェクトを言います。 thenableなオブジェクトがもつ then は、Promiseのもつ then と同じような挙動を期待していて、thenableなオブジェクトがもつ元々の then を上手く利用できるようにし promiseオブジェクトに変換するという仕組みです。 どのようなものがthenableなのかというと、分かりやすい例では0 码力 | 137 页 | 1.17 MB | 2 年前3
JavaScript Promise迷你书(中文版)tests) ..... 52 Chapter.4 - Advanced ..... 56 Promise的实现类库(Library) ..... 56 Promise.resolve和Thenable ..... 59 使用reject而不是throw ..... 68 Deferred和Promise ..... 71 使用Promise.race和delay取消XHR请求 .. 代码的时候都非常方便。 ## Thenable Promise.resolve 方法另一个作用就是将 thenable 对象转换为 promise 对象。 ES6 Promises里提到了Thenable这个概念,简单来说它就是一个非常类似promise的东西。 就像我们有时称具有 .length 方法的非数组对象为Array like一样,thenable指的是一个具有 .then 方法的对象。 方法的对象。 这种将thenable对象转换为promise对象的机制要求thenable对象所拥有的 then 方法应该和Promise所拥有的 then 方法具有同样的功能和处理过程,在将thenable对象转换为promise对象的时候,还会巧妙的利用thenable对象原来具有的 then 方法。 到底什么样的对象能算是thenable的呢,最简单的例子就是jQuery.ajax()^{10 码力 | 112 页 | 1010.02 KB | 2 年前3
JavaScript Promiseの本 v1意図したテストを書くには ..... 54 Chapter.4 - Advanced ..... 58 Promiseのライブラリ ..... 58 Promise.resolveとThenable ..... 61 throwしないで、rejectしよう ..... 70 DeferredとPromise ..... 73 Promise.raceとdelayによるXHRのキャンセル のショートカットとして、promiseオブジェクトの初期化時やテストコードを書く際にも活用できます。 ## Thenable もう一つ Promise.resolve の大きな特徴として、thenableなオブジェクトをpromiseオブジェクトに変換するという機能があります。 ES6 PromisesにはThenableという概念があり、簡単にいえばpromiseっぽいオブジェクトのことを言います。 .length likeというのと同じで、thenableの場合は .then というメソッドを持ってるオブジェクトを言います。 thenableなオブジェクトがもつ then は、Promiseのもつ then と同じような挙動を期待していて、thenableなオブジェクトがもつ元々の then を上手く利用できるようにし promiseオブジェクトに変換するという仕組みです。 どのようなものがthenableなのかというと、分かりやすい例では0 码力 | 115 页 | 1.06 MB | 2 年前3
阮一峰 《ECMAScript 6入门》 第三版如果参数是Promise实例,那么 Promise.resolve 将不做任何修改、原封不动地返回这个实例。 ## (2) 参数是一个 thenable 对象 thenable 对象指的是具有 then 方法的对象,比如下面这个对象。 Promise 对象 let thenable = { then: function(resolve, reject) { resolve(42); resolve 方法会将这个对象转为Promise对象,然后就立即执行 thenable 对象的 then 方法。 let thenable = { then: function(resolve, reject) { resolve(42); } }; let p1 = Promise.resolve(thenable); p1.then(function(value) { console.log(value); // 42 }); 上面代码中,thenable 对象的 then 方法执行后,对象 p1 的状态就变为 resolved,从而立即执行最后那个 then 方法指定的回调函数,输出42。 (3)参数不是具有 then 方法的对象,或根本就不是对象 如果参数是一个原始值,或者是一个不具有 then 方法的对象, 则 Promise.resolve0 码力 | 679 页 | 2.66 MB | 2 年前3
ThinkJS 1.2 中文文档## Promise ThinkJS 中的 Promise 使用了 es6-promise 库,是个全局对象,含有如下的方法: all(array) resolve(promise | thenable | obj) reject(obj) race(array) ## Class(superCls, prop) superCls function 父类 • prop function0 码力 | 104 页 | 1.29 MB | 2 年前3
共 5 条
- 1













