[英]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.