Giter VIP home page Giter VIP logo

Comments (6)

clue avatar clue commented on May 18, 2024

πŸ‘ for rejecting invalid input

But then again what is valid input here? :-)

from promise.

jsor avatar jsor commented on May 18, 2024

At the moment, it is an array or a promise which resolves to an array. Passing anything other produces

all(null)
    ->then(function($value) {
        assertEquals([], $value);
    });

which i think is not an expected behaviour.

from promise.

clue avatar clue commented on May 18, 2024

which i think is not an expected behaviour

Yeah, I agree that we should handle this is in a more sane way πŸ‘

However, now that we're already considering what is valid input, I would suggest using a stricter definition. For example, ES6-style promises limit the parameter to be an array of promises (or values which are considered like resolved promises): https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Promise/all (which IMHO makes sense to me).

As such, does it make sense to pass a single Promise which resolves to an array of values? Do we have a valid use case for this?

from promise.

jsor avatar jsor commented on May 18, 2024

As such, does it make sense to pass a single Promise which resolves to an array of values? Do we have a valid use case for this?

I've never used a single input promise.

Options:

  • No change, allow input promise which resolves to an array, requires rejection with InvalidArgumentException for non-array input
  • Typehint against array, does not require rejection for non-array input
  • Allow array and \Traversable input, no typehint possible, requires rejection with InvalidArgumentException for non-array input

I'm unsure on this atm.

from promise.

clue avatar clue commented on May 18, 2024

No change, allow input promise which resolves to an array, requires rejection with InvalidArgumentException for non-array input

πŸ‘Ž on this unless we find a valid use case

  • Typehint against array, does not require rejection for non-array input
  • Allow array and \Traversable input, no typehint possible, requires rejection with InvalidArgumentException for non-array input

IMO both sound sane…

Some (random) thoughts:

  • On success, the all() method resolves with an array, so for consistency it may make sense to require an input array
  • Traversable and Iterator have valid use cases, though I'm failing to see how these would be beneficial here. Also, converting via iterator_to_array() is trivial.
  • Permitting several input types means we have to use additional runtime checks which add to complexity. Also, this makes it harder to use type guessing (IDEs).
  • Typehinting against array is trivial and requires no boilerplate. It probably fulfills 80%+ of the use cases anyway and converting to an array is trivial.

As such, I'm leaning towards using an array typehint πŸ‘

from promise.

jsor avatar jsor commented on May 18, 2024

As such, I'm leaning towards using an array typehint

πŸ‘

from promise.

Related Issues (20)

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.