小编pdh*_*710的帖子

Javascript:承诺链与异步/等待?

我正在学习Javascript Promiseasync/ await.下面的示例代码异步读取并解析node.js中的JSON文件(我的node.js版本是v10.0.0).

在示例代码中,ChainReadJson函数和AwaitReadJson函数正在做同样的事情,读取和解析JSON文件.不同之处在于ChainReadJson函数使用promise链,而AwaitReadJson函数使用async/await.

const FS = require("fs");

function ReadFile(fileName) {
    return new Promise((Resolve, Reject) => {
        FS.readFile(fileName, 'utf8', (error, result) => {
            if (error)
                Reject(error);
            else
                Resolve(result);
        });
    });
}

// function using promise chain

function ChainReadJson(fileName, CallBack) {
    ReadFile(fileName)
        .then(
            res => JSON.parse(res),
            err => {
                Message(-1, err.message);
            }
        )
        .then(
            res => {
                if (res !== undefined)
                    CallBack(fileName, res);
            },
            err => {
                Message(-2, err.message);
            }
        );
}

// function using …
Run Code Online (Sandbox Code Playgroud)

javascript node.js async-await es6-promise

11
推荐指数
1
解决办法
2991
查看次数

Javascript 优化、V8 引擎和 Typescript

我阅读了以下有关 V8 引擎和 javascript 优化的文章。

JavaScript 的工作原理:V8 引擎内部 + 5 个关于如何编写优化代码的技巧

根据上面的文章,推荐这些:

A。V8引擎使用隐藏类以及隐藏类和属性的缓存机制。所以避免动态添加对象属性,也避免动态改变属性的类型。而是使用对象构造函数。

b. V8引擎对常用功能进行了更多优化。因此,请避免生成仅执行一次的许多不同的相似表单函数。相反,编写代码来重复执行相同的函数。

然后,我有3个问题:

我。'a'和'b'可以应用于其他浏览器的javascript引擎,例如firefox的SpiderMonkey吗?

二. 根据“a”的说法,使用 typescript 对 v8 引擎优化更有优势?(使用 typescript,您可以生成具有较少动态变化对象和属性的 javascript 代码)

三. 现代 JavaScript 代码使用大量具有类似形式的内联和匿名函数,如下面的示例代码。根据“b”,使用单个预定义函数更有利?(此示例代码非常简化,用于显示多次使用的类似表单函数)

prm.then((res) => {
    console.log(res);
}).then((res2) => {
    console.log(res2);
}).catch((err) => {
    console.log(err);
});
Run Code Online (Sandbox Code Playgroud)

javascript optimization v8 typescript

5
推荐指数
1
解决办法
2856
查看次数

node.js:嵌套函数风格代码比 ES6 类风格有害?

(请原谅我的英语)

下面是一个非常简化的示例代码。

function test(limit) {
    let count = 0, undone = true;

    function inc() {
        // do something
        count++;
        if(count == limit)
            undone = false;
    }

    while(undone) {
        // do something
        inc();
    }
}
Run Code Online (Sandbox Code Playgroud)

我经常使用嵌套函数样式的函数,如inc()上面的示例所示。因为共享变量非常方便。
然而,有人告诉我,我的编码风格非常有害。因为每次test()(在上面的示例中)被调用时,都会inc()在内存中重复分配。他建议我改用 ES6 类样式代码。

我不能同意他的观点,但也不确定。嵌套函数风格的代码真的比 ES6 类风格有害吗?

编辑

我对这个问题进行了一个简单的基准测试,如下所示。

/sf/answers/3607146931/

结果让我有些惊讶。我错了。我的顾问是对的。

编辑 首先,这篇文章的标题是“闭包样式代码是......”。我将其修改为“嵌套函数样式代码是...”。

javascript node.js

3
推荐指数
1
解决办法
1200
查看次数