Commit graph

115 commits

Author SHA1 Message Date
Eryn Lynn
df750d4a11 update docs 2021-09-30 03:01:59 -04:00
Eryn Lynn
3f77076707 Update to use moonwave docs 2021-09-23 19:08:38 -04:00
howmanysmall
72f100473d
Fix linting (#49) 2021-03-18 20:43:49 -04:00
Dave Brown
4790938b04
Fixed wrongly directed link
Minor correction to the API reference, now should link to the correct webpage rather than to 404
2021-01-16 10:43:05 +00:00
Eryn Lynn
4f3604e9f1 v3.1.0 2020-12-01 20:26:44 -05:00
Eryn Lynn
73e91d89dd Fix typo 2020-12-01 20:18:02 -05:00
otrepanier
ce6c12f177 remove promise check 2020-11-30 16:42:21 -08:00
otrepanier
1ac7d3cae9 refactor implementation to support cancel 2020-11-30 16:34:13 -08:00
otrepanier
9d554f236a update documentation 2020-11-20 15:11:41 -08:00
otrepanier
4fc7792c0c implement Promise.fold 2020-11-20 14:14:27 -08:00
Dog2puppy
25ef780336
Configure HttpEnabled when installing
When using the command bar script, it first stores the current setting of HttpEnabled, sets it to true, adds the module, and sets it back to the previous value. This removes the step requiring the user to configure HttpEnabled within the Game Settings window.
2020-09-23 22:53:02 -04:00
Eryn Lynn
e7a01c7bed Fix #39 2020-08-24 13:34:36 -04:00
Eryn Lynn
a4256062a0 Fix casing 2020-08-24 13:25:09 -04:00
Eryn Lynn
eafa18be87 Merge branch 'master' into pr/40 2020-08-24 13:22:16 -04:00
Eryn Lynn
d47d597259 Fix #41 2020-08-24 13:20:47 -04:00
Niles
7dd656dede
Update init.spec.lua 2020-08-23 01:21:35 -05:00
Niles
3a96a1d2a7
Allow OnCancel to break out of the current loop 2020-08-22 03:49:59 -05:00
Eryn Lynn
9b5a39d2c3 Add more examples to docs 2020-08-17 19:30:35 -04:00
Eryn Lynn
3aff27def0 Add installation guide
Closes #15
2020-08-17 19:30:25 -04:00
Niles
313d1cb6ab
Revert back to Promise._timeEvent and Promise._getTime statics 2020-08-07 00:52:41 -05:00
Niles
d1ff9be774
Promise.delay fix 2020-07-16 05:51:54 -05:00
Eryn Lynn
13ae48a5ee Fix #31 2020-07-10 23:45:47 -04:00
eryn L. K
ad71d3021c
Merge pull request #27 from howmanysmall/patch-3
Update init.lua
2020-06-10 18:40:12 -04:00
FableRBX
6fb7ed746f
Update Tour.md 2020-06-10 13:53:24 -07:00
howmanysmall
dde1c6517e
Update init.lua
- [Prefer calling string functions directly](https://developer.roblox.com/en-us/resources/release-note/Release-Notes-for-433)
- Fixed spaces being used in `Promise.retry`.
- Fixed `Promise:done` calling itself `Promise:finallyO` in the assert. (intentional?)
- Prefer using the first return of `ipairs` to add a Promise to the array instead of `table.insert`.
- Removed the unused `reject` in `Promise._try`
- Trailing commas as per Roblox Lua style guide.

Other suggestions:

- You could use `table.create` in `Promise:timeout` like so:

```Lua
function Promise.prototype:timeout(seconds, rejectionValue)
	local traceback = debug.traceback(nil, 2)

	local racedPromises = table.create(2)
	racedPromises[1] = Promise.delay(seconds):andThen(function()
		return Promise.reject(rejectionValue == nil and Error.new({
			kind = Error.Kind.TimedOut,
			error = "Timed out",
			context = string.format(
				"Timeout of %d seconds exceeded.\n:timeout() called at:\n\n%s",
				seconds,
				traceback
			),
		}) or rejectionValue)
	end)

	racedPromises[2] = self
	return Promise.race(racedPromises)
end
```
2020-06-09 12:53:06 -06:00
Eryn Lynn
bcbd3385f4 Update docs 2020-06-02 00:54:36 -04:00
Eryn Lynn
b7d6a935be Update documentation 2020-06-02 00:19:02 -04:00
Eryn Lynn
b4ba6d2414 Add Promise.fromEvent
closes #14
2020-05-29 02:10:45 -04:00
Eryn Lynn
e5843cf5a2 Add Promise.retry
Closes #16
2020-05-29 02:10:29 -04:00
Eryn Lynn
8cb4b21f60 Write docs for Promise.each 2020-05-13 20:16:07 -04:00
Eryn Lynn
0c0d7f0464 Add Promise.each
closes #21
2020-05-13 19:48:45 -04:00
Eryn Lynn
078abeae83 improve api reference 2020-05-13 17:12:22 -04:00
Eryn Lynn
1ad5ab8b3e fix capitalization 2020-05-11 15:43:58 -04:00
Eryn Lynn
fc134adb73 mprove Promise.delay accuracy 2020-05-11 15:43:50 -04:00
Eryn Lynn
266e265e20 Allow rejection with error objects 2020-05-11 15:43:35 -04:00
Eryn Lynn
faa4f73dd3 Add Promise:now()
closes #23
2020-05-06 19:22:48 -04:00
Eryn Lynn
ff345ea31b Expose & refactor RuntimeError 2020-05-06 18:02:10 -04:00
Eryn Lynn
292e47293c Let Promise:expect() throw rejection objects 2020-05-06 14:20:34 -04:00
Eryn Lynn
0c30e0c40b Merge branch 'master' into use-xpcall 2020-05-05 18:15:45 -04:00
Eryn Lynn
1ca3fff6f5 Use xpcall, revamp error handling 2020-05-04 23:56:49 -04:00
David Duque
9cf49499bd
Apply suggestions
Co-authored-by: eryn L. K. <eryn@eryn.io>
2020-05-04 20:19:54 +01:00
David Duque
4586cc5a90
Use pcall() on Promise.is when looking for the .andThen function
Some tables might have strict metatables that error if a non-existant
member is indexed, causing the chain to fail.
2020-05-02 19:24:05 +01:00
Eryn Lynn
57d98880b5 make promisify test more clear 2020-04-17 20:00:54 -04:00
James Onnen
ffd4cd94a1
Avoid reallocating another table for the _consumers() metatable, leading to a 5%-10% speed up of the trivial Promise.new(function() end) case 2020-03-29 03:35:15 -07:00
Eryn Lynn
5a4a30e221 Fix broken tests 2020-02-28 21:21:01 -05:00
Niles
4e6b0de633
Update init.lua 2020-02-14 15:08:53 -06:00
Niles
e1e183d632
Optimize Promise.delay with linked-list impl
- Always iterate over promises via `ipairs`
- Avoid pushing the call arguments stack to a table in Promise.prototype.expect and Promise.prototype.await
- Use a doubly-linked list implementation of a queue

The old queue/dequeue implementation used an array which:
    - has items removed from the front (`table.remove(queue, 1)` O(n) each time)
        - this is especially bad in the main loop which could run multiple times in-a-row on a large array
        - new: O(1)
    - uses table.insert() followed by table.sort() to add a new node (O(n log n))
        - new: O(n)
    - has to lookup the index of the node being dequeued (O(n))
        - new: O(1)
2020-02-14 06:02:48 -06:00
Eryn Lynn
64ba0099f1 Pass error to executor runner 2020-02-12 19:59:04 -05:00
Eryn Lynn
87937962ad Add traceback piping to more functions 2020-02-12 18:55:29 -05:00
Eryn Lynn
4ecdd156a5 awaitvalue -> expect 2019-11-12 23:14:18 -05:00