繁体   English   中英

导出模块中的节点js回调

[英]Node js callbacks in exported modules

我是新手,所以如果这很简单,请原谅我。

我试图在函数完成后运行回调。 无论我尝试哪种方式,回调都会首先执行。

我的模块import_data.js

module.exports.download = function(url, path, supplier, callback) {
//SF add dates to logging
console.log('Import for '+supplier+' started');
request({uri: url})
    .pipe(fs.createWriteStream(path))
    .on('close', function() {
        console.log('Import complete');
    },function(err, data){
        callback;
    });
};

import_js被称为通用

'use strict';

//var db              = require('../config/sequelize').sequelize;

var common              = require('./common/index.js'),
    async               = require('async');

common.importData(
    'www.url.com',
    '/tmp/target.csv', 
    'Target Compenents', 
    console.log('callback')
);

我希望console.log('calback')是记录的最后一件事。

任何帮助,不胜感激。

您必须添加一个函数作为回调, console.log这是唯一的方法,它不是可以用作回调的函数。
因此,要解决此问题,您可以将console.log包装为如下功能:

common.importData(
    'www.url.com',
    '/tmp/target.csv', 
    'Target Compenents', 
    function(){console.log('callback')}
);

我希望它能帮助您,谢谢!

应该是这样的:

module.exports.download = function(url, path, supplier, callback) {
  //SF add dates to logging
  console.log('Import for '+supplier+' started');
  request({uri: url})
    .pipe(fs.createWriteStream(path))
    .on('response', function(response) {
      // now it's ready
      callback(response);
    })
    .on('error', function(err) {
      console.log(err);
    });
};

应用

common.download('some_url', 'target.csv', 'Target Components', function(response) {
  console.info(response);
  // ....
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM