等待函数在Java Script中返回值

时间:2017-08-18 19:30:01

标签: javascript asynchronous

我正在使用Java脚本中的函数读取CSV文件并等待返回值,但脚本未执行所需的操作。 CSV阅读器

`parseCSV : function(file) {
        return new Promise(function (resolve, reject) {
            var parser = csv({delimiter: ','},
                function (err, data) {
                    if (err) {
                        reject(err);
                    } else {
                        resolve(data);
                    }
                    parser.end();
                });
            fs.createReadStream(file).pipe(parser);
        });
    }`

调用CSV阅读器

`csvreader.parseCSV(csvFile).then(function(data) {
        data.forEach(function(line) {
            console.log(line[0]);
            console.log(line[1]);
            });
        },function(reason){
            console.error(reason);
            });`

在上面的代码中,它没有等待返回数据。

1 个答案:

答案 0 :(得分:1)

Javascript不会等待异步函数的返回值。假设someFunction和someAsyncFunction都返回值' x'。

同步

var result = someFunction();
console.log(result);  // This line would not be executed until someFunction returns a value.  
                      // This means that the console will always print the value 'x'.

异步

var result = someAsyncFunction();
console.log(result); // This line would be executed immediately after someAsyncFunction 
                     // is called, likely before it can return a value.
                     // As a result, the console will print the null because result has
                     // not yet been returned by the async function.

在上面的代码中,不会立即调用回调,因为parseCSV是一个异步方法。因此,只有异步函数完成后才会运行回调。