If you're going to use `this` then you must have a callback. It would make
no sense to have a `this` and nothing to apply it to.

You think EventEmitters would feel the overhead of the if?

    // context is Array, Object, or Function.
    // Numbers, Strings, and Booleans need not `apply` (very punny)
    if (context) {
      fn.call(context, a, b, c);
    } else {
      fn(a, b, c);
    }

As far as the guesswork, well, I hear you on that. I've already done my
ranting at UtahJS Conf. Put this as one more in the bucket of reasons that
callbacks-last was not a well-thought out idea....


AJ ONeal


On Fri, Jun 8, 2012 at 12:27 PM, Tim Caswell <t...@creationix.com> wrote:

> I think it's a useful addition, but it does cause a little overhead
> (though it's probably not noticeable compared to the actual work the async
> function is doing).  EventEmitters might feel the pain since they are sync.
>  I do worry that it makes things harder for our argument guessing code that
> assumes the last arg is a callback.  Now there will be an optional argument
> after the callback that can be anything (including another function)
>
>
> On Fri, Jun 8, 2012 at 1:18 PM, AJ ONeal <coola...@gmail.com> wrote:
>
>> Yes, That's what I am suggesting.
>>
>> AJ ONeal
>>
>>
>> On Fri, Jun 8, 2012 at 12:17 PM, Tim Caswell <t...@creationix.com> wrote:
>>
>>> So this proposal is to modify the API of all async functions to have an
>>> extra thisp argument after the callback argument (like done in
>>> Array.prototype.forEach)?
>>>
>>>
>>> On Fri, Jun 8, 2012 at 1:06 PM, AJ ONeal <coola...@gmail.com> wrote:
>>>
>>>> I would like to propose that an additional parameter, `context` be
>>>> added to core node modules that accept callbacks to give this-ness to the
>>>> callback.
>>>>
>>>> The reason being is that I'm trying to eliminate anonymous callbacks
>>>> from my code and have generally cleaner, more readable code (as well as
>>>> lower memory usage and less garbage collection).
>>>>
>>>> I don't know if this has been discussed before, but I'd like to put it
>>>> on the table.
>>>>
>>>> AJ ONeal
>>>>
>>>
>>>
>>
>

Reply via email to