Make resolve/reject accept multiple values

Closes #4
This commit is contained in:
Eryn Lynn 2019-09-28 17:48:55 -04:00
parent c0626c0baf
commit f6c3dd163a
3 changed files with 14 additions and 10 deletions

View file

@ -163,13 +163,13 @@ docs:
- name: resolve
desc: Creates an immediately resolved Promise with the given value.
static: true
params: "value: T"
returns: Promise<T>
params: "value: ...any"
returns: Promise<...any>
- name: reject
desc: Creates an immediately rejected Promise with the given value.
static: true
params: "value: T"
returns: Promise<T>
params: "value: ...any"
returns: Promise<...any>
- name: all
desc: |
Accepts an array of Promises and returns a new promise that:

View file

@ -230,18 +230,20 @@ end
--[[
Create a promise that represents the immediately resolved value.
]]
function Promise.resolve(value)
function Promise.resolve(...)
local length, values = pack(...)
return Promise.new(function(resolve)
resolve(value)
resolve(unpack(values, 1, length))
end)
end
--[[
Create a promise that represents the immediately rejected value.
]]
function Promise.reject(value)
function Promise.reject(...)
local length, values = pack(...)
return Promise.new(function(_, reject)
reject(value)
reject(unpack(values, 1, length))
end)
end

View file

@ -90,11 +90,12 @@ return function()
describe("Promise.resolve", function()
it("should immediately resolve with a value", function()
local promise = Promise.resolve(5)
local promise = Promise.resolve(5, 6)
expect(promise).to.be.ok()
expect(promise:getStatus()).to.equal(Promise.Status.Resolved)
expect(promise._values[1]).to.equal(5)
expect(promise._values[2]).to.equal(6)
end)
it("should chain onto passed promises", function()
@ -110,11 +111,12 @@ return function()
describe("Promise.reject", function()
it("should immediately reject with a value", function()
local promise = Promise.reject(6)
local promise = Promise.reject(6, 7)
expect(promise).to.be.ok()
expect(promise:getStatus()).to.equal(Promise.Status.Rejected)
expect(promise._values[1]).to.equal(6)
expect(promise._values[2]).to.equal(7)
end)
it("should pass a promise as-is as an error", function()