Search code examples
javascriptjquerycompressionlzma

SyntaxError: missing ) after argument list while using LZMA-js


I am trying to compress a string using the LZMA-JS library found here. Here is my javascript:

var reader  = new FileReader();

reader.addEventListener("load", function () {
    var big_code = reader.result;
    console.log(big_code.length);
    var my_lzma = new LZMA();
    my_lzma.compress(my_lzma, 1, on_finish(result, error) {
        code = result;
    });
    console.log(code.length);
}, false);

The error occurs on this line

my_lzma.compress(my_lzma, 1, on_finish(result, error) { //the rest occurs below

However, when I change this line by removing the {} brackets like this

my_lzma.compress(my_lzma, 1, on_finish(result, error));

the error goes away. Unfortunately this makes the code useless because I need the result.

I have looked around the internet for over an hour trying to find a solution to this error. I don't believe this is a duplicate because I have not found anything related.

Why am I getting this error?


Solution

  • The documentation is perhaps confusing - the function's role, not name, is on_finish, so use this instead to indicate you are creating an in-line function:

    my_lzma.compress(my_lzma, 1, function (result, error) {
        code = result;
    });
    

    See the example usage here.