具有不一致顺序的TypeScript执行

时间:2017-07-20 03:27:28

标签: javascript node.js typescript visual-studio-code

我在TypeScript 2.4.1,Node.js v8.1.3和VS Code 1.14.0上遇到了一些问题。

出于某种原因,我的实验代码没有按顺序打印。特别是休息和预备部分。

这是我的测试页。

我在这里错过了什么吗?

GggDataStructuresIntTests.ts

var dotdotdotFun = function () {
    let [first, ...rest] = [1, 2, 3, 4, 5];
    console.log("first", first); // outputs 1
    console.log("rest", rest); // outputs [ 2, 3, 4 ]
    rest.forEach((item) => {
        console.log("forEach", item);
    });
}
dotdotdotFun();

tsconfig.json

{
    "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "outDir": "js/",
        "sourceMap": true,
        "lib": [ "es2015" ],        
        "watch": true
    },
    "exclude": [
        "node_modules",
        "typings/browser.d.ts",
        "typings/browser"
    ]
}

launch.json

{

    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Node.js",            
            "program": "${file}",
            "outFiles": [
                "${workspaceRoot}/js/**/*.js"
            ]
        }        
    ]
}

有一些输出;

输出1:

enter image description here

输出2:

enter image description here

输出3:

enter image description here

1 个答案:

答案 0 :(得分:1)

Yeshan Jay评论之后,我通过Node.js v8.2.0 Documentation对console.log()进行了更多研究。

如下所示:

<强>控制台

  

警告:全局控制台对象的方法既不一致   同步就像它们类似的浏览器API,也不是   像所有其他Node.js流一样异步。见说明   在process I/O for更多信息。

所以看起来它根本不是TypeScript编译器的错误。 (我查了编译JS,一切都很好)。由于我是通过Node.js引擎运行编译的js,因此问题从那一刻开始。这就是为什么问题无法在浏览器级别重现的原因。

我没有检查上一代节点引擎,但是在这个新版本(&gt; = 8)上,似乎不应该将console.log()视为同步。