小编Jon*_*lms的帖子

1592
推荐指数
2
解决办法
97万
查看次数

如何使用 Express .listen()(在 Typescript 中)处理错误?

目前正在将我的项目转换为使用 Typescript。我以前在 Node 中启动 Express 的工作代码如下所示:

server.listen(port, (error) => {
  if (error) throw error;
  console.info(`Ready on port ${port}`);
});
Run Code Online (Sandbox Code Playgroud)

有了这个,我现在得到一个打字稿错误:

Argument of type '(error: any) => void' is not assignable to parameter of type '() => void'.
Run Code Online (Sandbox Code Playgroud)

我试过为参数分配一个类型,例如error: Errororerror: any但这并不能解决问题。我在这里做错了什么?

另外,由于我是 Typescript 的新手,虽然我已经找到了大量通常用于学习 Typescript 的资源,但是否有任何地方我应该知道如何在更特定于 npm 包的场景中处理 Typescript?

javascript node.js express typescript

15
推荐指数
1
解决办法
3590
查看次数

测试是否所有数组元素都是数字因子-在for循环内返回

我有以下问题:

编写一个函数,如果数组中的所有整数都是数字因子,则返回true,否则返回false。

我尝试了下面的代码:

function checkFactors(factors, num) {

  for (let i=0; i<factors.length; i++){
    let element = factors[i];
      console.log(element)

    if (num % element !== 0){
      return false 
    }
    else {
      return true
    }
  }
}

console.log(checkFactors([1, 2, 3, 8], 12)) //? false
Run Code Online (Sandbox Code Playgroud)

我的解决方案返回true,这是错误的。我知道是else语句弄糟了它。但是我想理解为什么else语句不能去那里。

javascript arrays loops if-statement

7
推荐指数
2
解决办法
1608
查看次数

'await'即使在异步函数中也不起作用

我用谷歌搜索了这个,但找不到与我的问题有关的结果.我把'await'放在异步函数中但node.js说"SyntaxError:Unexpected identifier".有人可以帮忙吗?我刚刚开始学习JavaScript.

async function removeFile(data) {
    return new Promise((resolve, reject) => {
        try {
            if (!data.arg) {
                //check if there's filename
                data.msg.channel.send("What did you want me to remove baka?").then(async result => {
                    data.client.setTimeout(data.tsundere, 5000, result);
                });
            } else {
                //check if there's repo id in the config file (Personal)
                if (!data.config.group && !data.config.repo_id) {
                    data.msg.channel.send("Hmmph! Please set the repo channel ID in the config file first?");
                    //check if the channel is valid (Personal)
                } else if (!data.config.group && !data.msg.guild.channels.has(data.config.repo_id)) { …
Run Code Online (Sandbox Code Playgroud)

javascript promise async-await discord.js

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

V8 如何使用 requestAnimationFrame 重建异步堆栈跟踪?

根据零成本异步堆栈跟踪, V8 使用微任务中的 Promise 引用来重建“异步堆栈跟踪”。我假设调试器中也使用了类似的技术,它也显示了“异步堆栈”。然而,当调试“伪递归函数”时,例如使用以下函数requestAnimationFrame

(function tick() { requestAnimationFrame(tick); })();
Run Code Online (Sandbox Code Playgroud)

然后 Chrome 还显示了一些“异步堆栈”,如这个问题所示,尽管没有 Promise 存在。V8 如何恢复这个堆栈?它是否收集有关如何安排微任务的信息?如果是这样,什么可以防止内存泄漏?

javascript v8 google-chrome-devtools

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

Javascript if else循环?

我肯定可能有,但是我不确定它叫什么,所以如果这是超级相似的道歉.我想知道是否有更快的方法来编写以下代码:

var b = "#ff0002";
var o = "#46c029";
var i = "#f2ec00";
var n = "#f64c98";
var g = "#52c6f3";

if(a==1){
    return b;
}else if(a==2){
    return o;
}else if(a==3){
    return i;
}else if(a==4){
    return n;
}else if(a==5){
    return g;
}
Run Code Online (Sandbox Code Playgroud)

javascript loops if-statement

4
推荐指数
1
解决办法
115
查看次数

数组过滤器-摆脱O(n ^ 2)

我需要对非常大(超过200k个元素)的对象数组执行2个过滤器,因此我希望我的代码在javascript中尽可能快。

第一个过滤器很简单,因为我只需要删除为空(null)的元素:

let validArr = originalArr.filter(el => { return el != null });
Run Code Online (Sandbox Code Playgroud)

第二个过滤器是检查是否validArr[i].name等于其他数组的元素之一。目前我是这样的:

for(let i = 0, l = validArr.length; i < l; i++) {
    if (findInArray(validArr[i].name, otherArr)) {
        finalArr.push({
            name: validNpc[i].nick,
            id: validNpc[i].id
        });
    }
}

const findInArray = (val, arr) => {
    for(let i = 0, l = arr.length; i < l; i++) {
        if(arr[i] === val) return true;
    }
    return false;
};
Run Code Online (Sandbox Code Playgroud)

在循环中,我有微优化,但是有O(n ^ 2)我想重构,但我不知道如何。

javascript arrays filter

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

QUIC 连接迁移实际上是如何工作的?

据我了解,QUIC 为每个连接都有一个唯一的 ID,允许参与者更改其 IP 地址(例如,从 WIFI 移动到移动网络时),但仍然相互发送数据包,这些数据包仍然可以分配给正确的连接。

但接收方如何知道对方要发送数据包的新 IP 地址呢?

我已经阅读了规范但我不太明白它是如何工作的

http quic http3

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

将时间转换为浮点数

我有一个秒表应用程序,它将时间存储在数组中。JS 从定时器启动时开始计算毫秒,然后将这些毫秒转换为秒和分钟,并将其作为字符串输出。

我想做的是计算这些时间的平均值,所以我必须将字符串转换为浮点数。它可以将像 10.35 这样的字符串转换为浮点数,但它显然不适用于像 1:24.56 这样的字符串,这就是我正在尝试解决的问题。时间将采用以下格式之一:

[seconds].[milliseconds]
[minutes]:[seonds].[milliseconds]
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我对 Javascript 很陌生,所以我不知道该去哪里。

编辑:回购协议在这里。所有的废话都发生在timer.js 和main.js 文件中。

javascript timer stopwatch

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