123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- Smalltalk createPackage: 'Kernel-Promises'!
- Object subclass: #Thenable
- instanceVariableNames: ''
- package: 'Kernel-Promises'!
- !Thenable commentStamp!
- I am the abstract base class for Promises.
- My subclasses should wrap existing JS implementations.
- I contain methods that wrap Promises/A+ `.then` behaviour.!
- !Thenable methodsFor: 'promises'!
- all: nadicBlock
- <return self.then(function (array) {
- return nadicBlock._valueWithPossibleArguments_(array);
- })>
- !
- catch: aBlock
- <return self.then(null, function (err) {
- return aBlock._value_(err);
- })>
- !
- on: aClass do: aBlock
- <return self.then(null, function (err) {
- if (err._isKindOf_(aClass)) return aBlock._value_(err);
- else throw err;
- })>
- !
- on: aClass do: aBlock catch: anotherBlock
- <return self.then(null, function (err) {
- try { if (err._isKindOf_(aClass)) return aBlock._value_(err); } catch (e) { err = e; }
- return anotherBlock._value_(err);
- })>
- !
- then: aBlock
- <return self.then(function (result) {
- return aBlock._value_(result);
- })>
- ! !
|