# Running Brain.js Asynchronously Question

**URL:** <https://discourse.nodered.org/t/running-brain-js-asynchronously-question/16479>\
**Category:** General\
**Created:** [8 October 2019 17:37 UTC](https://discourse.nodered.org/t/running-brain-js-asynchronously-question/16479 "2019-10-08T17:37:54Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![tcontrada](https://avatars.discourse-cdn.com/v4/letter/t/f1d935/32.png) [@tcontrada](https://discourse.nodered.org/u/tcontrada)\
**Post date:** [8 October 2019 17:37 UTC](https://discourse.nodered.org/t/running-brain-js-asynchronously-question/16479/1 "2019-10-08T17:37:54Z")

</div>

I am using Brain.js for some test functions and trying to figure out if I can run it asynchronously from a Function Node. It works fine running synchronously, but the async return function does not seem to fire and output the msg.payload.

Here is my code from the Function Node

```auto
var brain=context.global.get('brainjs');

const net = new brain.NeuralNetwork();

var output = [];

const trainingData =[{input: [0], output: [0]},{input: [2], output: [0]},{input: [4], output: [0]},{input: [6], output: [1]},{input: [8], output: [1]},{input: [10], output: [1]}];

net.trainAsync(trainingData, {log: true} )
    .then(res =>{
        //Multiple Outputs
        for(i = 0; i < 10; i++)
        {
            var n = net.run([i]);
            output[i] = "Input: " + i + " Output: " + n;
        }
        msg.payload = output;
        return msg;
        
    })
    .catch()
    

```

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [8 October 2019 17:41 UTC](https://discourse.nodered.org/t/running-brain-js-asynchronously-question/16479/2 "2019-10-08T17:41:21Z")

</div>

Maybe as per the docs ? [https://nodered.org/docs/user-guide/writing-functions#sending-messages-asynchronously](https://nodered.org/docs/user-guide/writing-functions#sending-messages-asynchronously)

---

<div class="post-metadata">

**Author:** ![tcontrada](https://avatars.discourse-cdn.com/v4/letter/t/f1d935/32.png) [@tcontrada](https://discourse.nodered.org/u/tcontrada)\
**Post date:** [9 October 2019 16:53 UTC](https://discourse.nodered.org/t/running-brain-js-asynchronously-question/16479/3 "2019-10-09T16:53:21Z")

</div>

Added, as per the documentation of asynchronous node msg.  
Updated code below seems to work:

```auto
var brain=context.global.get('brainjs');

const net = new brain.NeuralNetwork();

var output = [];

const trainingData =[{input: [0], output: [0]},{input: [2], output: [0]},{input: [4], output: [0]},{input: [6], output: [1]},{input: [8], output: [1]},{input: [10], output: [1]}];

net.trainAsync(trainingData, {log: true} )
    .then(res =>{
        //Multiple Outputs
        for(i = 0; i < 10; i++)
        {
            var n = net.run([i]);
            output[i] = "Input: " + i + " Output: " + n;
        }
        msg.payload = output;
        node.send(msg);//Async MSG
        node.done();
        
    })
    .catch()
    

```

---

<div class="post-metadata">

**Author:** ![purnima](https://avatars.discourse-cdn.com/v4/letter/p/49beb7/32.png) [@purnima](https://discourse.nodered.org/u/purnima)\
**Post date:** [14 October 2019 11:33 UTC](https://discourse.nodered.org/t/running-brain-js-asynchronously-question/16479/4 "2019-10-14T11:33:24Z")

</div>

@tcontrada sir, Can you share your flow as a example

---

<div class="post-metadata">

**Author:** ![gilad](https://avatars.discourse-cdn.com/v4/letter/g/5f9b8f/32.png) [@gilad](https://discourse.nodered.org/u/gilad)\
**Post date:** [10 February 2020 07:36 UTC](https://discourse.nodered.org/t/running-brain-js-asynchronously-question/16479/5 "2020-02-10T07:36:22Z")

</div>

Same here.  
@tcontrada - can you please share your brain.js example flow? 10x
