我是一个Node.js程序员。在Node.js 7.6发布之前,我使用了模块'‘让我的代码以异步等待的方式出现。编码风格如下所示:
var async = require('asyncawait/async');
var await = require('asyncawait/await');
var getData = async(function(finder){
return await(db.collection.findOne(finder));
});
var f = function(finder){
return aw
我目前正在尝试测试一些Node.js代码。现在,我试图弄清楚为什么我的代码console.log()相对于代码执行顺序是不同的,这是关于与操作系统相关的Node.js函数调用的。
我的脚本这样做是为了:
//First
fs.readdir(){ //read from a directory all the available files
console.log some stuff #a
}
//Second
fs.readFile(){ //read entire text file
console.log some stuff #b
}
//Third
//create
我正在Node.js上处理这个函数,有以下要求:
尽可能保持同步代码流(这样读取/跟踪就简单了)
能够返回值,从而可以传递到更高级别的函数.
如果必须使用异步函数,则必须有某种方法“阻止”异步函数和返回语句之间的流,同时不阻塞程序和GUI。
这是我的代码:
main.js
var some = require("./some.js");
main_fn = function () {
var result = some.some_fn();
if (result == "good") // do something
};
我只是在学习Node.JS,我对此有一个疑问。
我得读一份文件。我是用'fs‘节点和'fs.readFile()’func来完成的。这是一个密码
const fs = require('fs');
let input;
fs.readFile('./'+config.file, (err, data) => {
input = data.toString('utf-8');
});
console.log(input) //!!! it gives me 'undefined' result bu
我在node.js中尝试做的事情的同步版本(为了可读性而简化):
var value = null;
var allValues = [];
do{
value = getValue(value); //load the next value
if(value) allValues.push(value);
}while(value);
console.log("Got all values:",allValues);
目标是迭代所有的值,但是,除非我传入当前值,否则getValue函数将只返回第一个值(导致无限循环)。
在node.js中,getValue()函数是异
我对Node.js有点陌生。我遇到了一个问题,当回调已经被执行时,我想阻止它运行。例如:
items.forEach(function(item) {
doLongTask(item, function handler(result) {
// If items.length > 1, this will get executed multiple times.
});
});
如何让handler的其他调用在开始之前等待第一个调用完成?我在想一些类似队列的东西,但我是Node.js的新手,所以我不知道该怎么做。想法?
我希望我的node.js程序每30秒打印一次foo。所以我写了这样的代码:
let count = 0
function foo () {
console.log(`foo`)
count += 1
// do other things that takes about 20 seconds.
}
while (count < 10) {
console.log(`inside while loop`) // my screen keep printing `inside while loop` until "JavaScript heap out of m
我是这个Node.js的新手。我担心我的所有代码都会同步运行,从而阻塞了其他请求,使我的应用程序在处理许多请求时显得滞后、冻结等等。
如果我写这段代码:
const array = new Array(1000000000);
for (let i=0; i < array.length; i++) {
const item = array[i];
// do a lot heavy lifting with each item
}
Node.js会自动异步运行该代码吗?
它还在运行代码时会阻止其他请求吗?
或者我应该显式声明异步/等待我的代码的每一段?