parallel-js / parallel.js

Easy multi-core processing utilities for Node.
MIT License
3.23k stars 199 forks source link

"ReferenceError: list is not defined": The outside variable cannot be used/recognized during mapping. #228

Open zhengger opened 3 years ago

zhengger commented 3 years ago

I want to push value to variable list during mapping. It ends in the error "ReferenceError: list is not defined". I'm using typescript and below is my code.

import Parallel from 'paralleljs';
import { performance } from "perf_hooks";
import * as _ from "lodash";

const l = _.range(10,20);
const p = new Parallel(l);

const log = function () { console.log(arguments); };
const current_encode_Time_before = performance.now();
// One gotcha: anonymous functions cannot be serialzed
// If you want to do recursion, make sure the function
// is named appropriately

const list: Array<number> = [];  // I want to push new value to list during mapping 

function fib(n: number): number{
    let num: number = 0;
    num = n < 2 ? 1 : fib(n - 1) + fib(n - 2);
    list.push(num);
    return num;
};

p.map(fib).then(() => {
    const current_encode_Time_later = performance.now();
    console.log(
        "Parra: Test_Time difference",
        (current_encode_Time_later - current_encode_Time_before) / 1000
    );
});

The error is:

ReferenceError: list is not defined
    at fib (eval at <anonymous> (/Users/zhen/dev/simple/node_modules/_paralleljs@1.1.0@paralleljs/lib/eval.js:7:5), <anonymous>:4:5)

Thanks a lot!

far11ven commented 2 years ago

@zhengger did you resolve this?

zhengger commented 2 years ago

@zhengger did you resolve this?

Not yet.