Articles of asynchronous

如何使Grunt等待任务完成后再运行另一个?

这是我的Gruntfile和输出 。 正如您在输出中看到的那样,有几个与asynchronous任务相关的问题: imagemin被称为,下一个直线前进。 这使得它的输出出现在任务的最后,有什么相当混乱的; build ,这是一个自定义任务,使用var done = this.async()并在完成命令后调用done() ; 但是,如果我单独运行任务,这只能正常工作。 用另一个任务运行它也会使其运行asynchronous; 随着build运行后, jasmine没有什么可testing,因此是无用的。 有没有办法解决这个问题?

Node.js /asynchronous – 如何避免与asynchronouscallback地狱?

我是在后端新Node.Js和JavaScript的Web开发。 我看到callback里面的callback可能是一个痛苦,有模块可以避免这种情况。 其中一个模块是async, https://github.com/caolan/async 我已经阅读了文档,但很难开始并理解如何去做。 例如,我有这个函数“check_aut_user”,我怎样才能转换这个代码使用asynchronous? function check_auth_user(username, password, done) { var client = new pg.Client("pg://user:pass@127.0.0.1/database"); client.connect(function(err) { // If not get the connection if(err) { return console.error('could not connect to postgres', err); } // Query the user table client.query('select * from "user" where username = $1 and password = $2', [username, password], function(err, result) […]

NodeJSasynchronous:callback已经被调用?

我在Node.JS中使用asynchronous模块来跟踪我的asynchronous调用。 但是,我收到一个错误 – “已经调用callback”。 有人可以帮我吗? async.each(data['results'], function(result, done) { if (result['twitter_id'] !== null) { //Isolate twitter handle var param = { "user.screen_name": result['twitter_id']} db.test4.find( param, function(err, users) { if( err ) { return done(err); } else if (!users) { res.send("No user found"); } else { users.forEach( function(Result) { twitter_ids.push(Result); //console.log(Result); done(); }); } }); } […]

Node.js:在继续之前等待循环中的callback

我有一个循环,它有一个asynchronous调用,callback。 为了能够继续前进,我需要callback来触发整个循环,然后显示循环的结果。 我试图控制这种方式的每一个方法都行不通(尝试过Step,Tame.js,async.js等等) – 关于如何前进的build议? array = ['test', 'of', 'file']; array2 = ['another', 'array']; for(i in array) { item = array[i]; document_ids = new Array(); for (i2 in array2) { item2 = array2[i2]; // look it up mongodb.find({item_name: item2}).toArray(function(err, documents { // because of async, // the code moves on and calls this back later […]

asynchronous在Node.js中调用模式到API

构build我的第一个“严重的”Node.js项目(使用Express)。 我需要对几个REST API使用几个调用,收集所有结果,按摩它们,并返回一个完整的JSON到客户端(HTML5 + AJAX)。 调用API A 调用API B 再次调用API A(来自B的结果) 将3个调用的结果处理成JSON response.send(结果) 我敢肯定/希望有一个简单的模式,或解决scheme,或模块,我只是没有正确的谷歌:)我也将不胜感激意见放在这样的操作(在'路线'?分开的文件?等等。) 谢谢你的时间!

在新的Promise()构造函数中使用asynchronous/等待的反模式?

我使用async.eachLimit函数来一次控制最大操作数。 const { eachLimit } = require("async"); function myFunction() { return new Promise(async (resolve, reject) => { eachLimit((await getAsyncArray), 500, (item, callback) => { // do other things that use native promises. }, (error) => { if (error) return reject(error); // resolve here passing the next value. }); }); } 正如你所看到的,我不能将myFunction函数声明为async,因为我不能访问eachLimit函数的第二个callback函数中的值。

可以在node.js模块中asynchronous初始化导出吗?

由于MongoDB数据库访问和初始化在Node.js上是asynchronous的,所以我想为每个集合定义一个模块,在db初始化之后导出包装数据库调用。 这样的“Cars.model.js”模块看起来像这样: var db = require("mongodb"); db.collection("cars", function(err, col) { exports.getCars = function(callback) { col.find({}, callback); }; }); 以便其他模块可以运行: var carModel = require("Cars.model.js").getCars; getCars(err, cars) { // (do something with cars here…) }; 它发生在我身上, getCars是未定义的,因为数据库访问尚未初始化时,我的第二个模块运行。 你如何处理创build这样的asynchronous数据库模型?

节点Gruntasynchronous任务循环与闭合不起作用

预先感谢您看看这个。 我有一个循环中的asynchronous任务不工作。 我已经确定: 将我的循环variables“key”封装在闭包中,以避免经典的“仅限最后一个值”的问题,循环在asynchronous任务返回一个值之前完成很长时间,只显示最后一个值。 调用完成(错误)完成我的asynchronous任务(根据Gruntjs常见问题解答) 使用hasOwnProperty()来确保键是对象的实际属性,而不是来自原型。 遵循node.exec例子的格式,除了把exec的值赋给一个variables – 我试过了,但是没有帮助。 见下面的第一个参考。 这个函数输出…什么都没有! 出于某种原因,grunt.log.writeln语句甚至没有发射。 任务完成没有错误。 我还尝试添加20秒的延迟,以防脚本在asynchronous任务返回之前完成。 奇怪的是,如果我不叫“完成(错误),”文件被写入文件(当我用grunt.file.write语句replacewriteln的)。 var done = this.async(), exec = require('child_process').exec, myJSON = { "file1" : "C:/home/me/jquery.js", "file2 " : "C:/home/me/grunt.js", … "fileN" : "C:/home/me/N.js" }, count; for (var key in myJSON) { if (myJSON.hasOwnProperty(key)) { (function (key) { exec( 'type "' + myJSON[key] […]

Node.js同步与asynchronous

我目前正在学习node.js,我看到2个同步和asycn程序(同一个)的例子。 我明白一个callback的概念,但我试图理解第二个(asynchronous)的例子的好处,因为它们似乎是两个正在做同样的事情,即使这种差异… 你能否详细说明为什么第二个例子会更好? 我会很乐意得到更广泛的解释,这将有助于我理解这个概念。 谢谢!! 第一个例子: var fs = require('fs'); function calculateByteSize() { var totalBytes = 0, i, filenames, stats; filenames = fs.readdirSync("."); for (i = 0; i < filenames.length; i ++) { stats = fs.statSync("./" + filenames[i]); totalBytes += stats.size; } console.log(totalBytes); } calculateByteSize(); 第二个例子: var fs = require('fs'); var count = 0, totalBytes […]

Node.js – parsing简单的JSON对象和访问键和值

我是Node新手,并努力访问一个简单的JSON对象。 我的request.body将具有类似于以下的JSON内容: { "store_config": [ { "name": "hello", "name2": "world" } ] } “store_config”值将始终存在,但其中的键和值可以是任何值。 我如何迭代通过键和值访问每个? 我也想以asynchronous的方式处理每一个。 欣赏任何想法或方向。 UPDATE console.log(typeof(request.body)); 返回: Object parsedBody = JSON.parse(request.body); 收益: SyntaxError: Unexpected token o at Object.parse (native) 更新2 – 进一步debugging: 当我尝试遍历数组时,只有一个值: request.body.store_config.forEach(function(item, index) { console.log(index); console.log(request.body.store_config[index]); }); 收益: 0 { name: 'hello', name2: 'world' }