我想澄清一下--什么时候使用setImmediate进行节点回调是正确的。
我研究过的示例/文章认为最好使用setImmediate来确保回调是异步的。最常见的例子是一个值可能存在于“缓存”中。
const getData = function(id,callback) {
const cacheValue = cache[id];
if (cacheValue) {
// DON'T DO THIS ...
return callback(null,cacheValue);
// DO THIS ...
在正式文档"setImmediate() vs setTimeout()“部分中,它说:"setImmediate()是设计用来在当前轮询阶段完成后执行脚本的”,据我所知,它也意味着当前的蜱/事件循环周期。
然而,在后面的"process.nextTick() vs setImmediate()“部分中,它说:"setImmediate() 在事件循环的下面的迭代或'tick‘上触发。
所以哪一个是正确的答案,我错过了什么吗?
提前谢谢。
文档相关页面:
下面是一段代码:
var buffer = new Buffer(0, 'hex'); //Global buffer
socket.on('data', function(data) {
// Concatenate the received data to buffer
buffer = Buffer.concat([buffer, new Buffer(data, 'hex')]);
setImmediate(function() { // Executed asynchronously
/*Process messag
看过这些代码行
function someAsyncOperation () {
console.log("inside someAsyncOperation");
var startCallback = Date.now();
// do something that will take 10ms...
while (Date.now() - startCallback <= 100) {
; // do nothing
}
}
someAsyncOperation();
var timeoutScheduled = Date.now()
我一直在使用setImmediate超时函数,通过传递deleteOTP函数和要删除的动态口令的userId细节,我遇到了在setImmediate.Is中传递参数(UserId)到deleteOTP函数的问题,有任何解决方案,建议都非常感谢。
var update = setImmediate(deleteOTP,10000,userId);
function deleteOTP(Id) {
var params = {
Key: {
"id": {
S: Id
我正在节点8.11上运行这个测试脚本:
let end = false;
let i = 0;
setInterval(() => { i++; }).unref();
let k = 0;
async function loop() {
k++
if (end === false)
setImmediate(loop);
}
console.time('test');
loop()
.then(() => {
setTimeout(() => {
end = true;
console.log(
我读过一本很好的医生指南:
在这篇文章的某些部分中,我们提到了复杂的计算而不阻塞事件循环:
假设您希望在不阻塞事件循环的情况下在JavaScript中进行复杂的计算。您有两个选项:分区或卸载。您可以对计算进行分区,以便每个计算都在Event循环上运行,但定期生成(轮流)其他挂起的事件。
他们给出了一个计算0+1+2+.+n的代码示例:
function asyncAvg(n, avgCB) {
// Save ongoing sum in JS closure.
var sum = 0;
function help(i, cb) {
sum += i;
if (i
所以,第一次用setImmediate做实验。它似乎不能运行私有类方法。是真地吗?如果是,谁能给我解释一下原因吗?
不管用
专用类方法作为setImmediate的参数。抛出Callback must be a function. Received undefined
class TestPrivate {
public start(): void {
setImmediate(this.looper);
}
async looper(): Promise<void> {
console.log(`${new Date()
尝试使用React测试Formik。下面是Formik组件:
import React, { Component } from 'react';
import { Formik, Field } from 'formik';
import { Button } from 'reactstrap';
import * as Yup from 'yup';
import axios from 'axios';
import { connect } from 'react-redux';
import T
我正在尝试将一个流Axios响应输送到多个文件中。它不起作用,我可以用下面的简单代码来再现它:
将发挥作用:
const { PassThrough } = require('stream')
const inputStream = new PassThrough()
inputStream.write('foo')
// Now I have a stream with content
inputStream.pipe(process.stdout)
inputStream.pipe(process.stderr)
// will print 'fo