在导出的模块中节点jscallback
我是一个节点新手,所以如果这是简单的原谅我。
我正在尝试一个函数完成后运行一个callback。 不pipe我在哪边尝试,callback都会先执行。
我的模块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')是最后logging的事情。
任何帮助不胜感激。
你必须添加一个函数作为你的callback, console.log它只是方法,它不是一个函数,你可以用它作为callback。
所以要修复它,你可以把你的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); // .... });
- 将javascript对象与内部数组结合在一起(类似于foriegn键)
- 如何使用Nodejs中的Promise进行同步http调用
- 在node.js javascript为什么我不能添加到子function?
- nodeJscallback简单的例子
- 尝试在node.js中获取AESencryptionstring以匹配.net中的encryption值
- AngularJS – 预期的响应包含一个对象,而不是有一个数组
- Node.js:请求页面并允许页面在构build之前构build
- 将两个对象与数组合并在一起
- configuration快递为每个url发送index.html除了那些以.css和.js结尾的文件