sleep(1000)函数+parseInt

sleep

        // 意味着等待1000毫秒 可以从promise async await角度实现

        function sleep(ms) {

            return new Promise(resolve => { setTimeout(resolve, ms) })

        }

        async function example() {

            console.log("!");

            await sleep(1000);

            console.log("222")

        }

        example();

在这段代码中,sleep 函数返回一个 Promise 对象。Promise 构造函数接受一个参数,这个参数是一个函数,通常称为 executor 函数。这个 executor 函数接受两个参数,通常称为 resolve 和 reject。当 executor 函数被执行时,它通常会开始某个异步操作,并在操作完成时调用 resolve 或 reject 函数来指示 Promise 的状态。

在 sleep 函数中,executor 函数使用 setTimeout 来模拟一个异步操作,等待指定的毫秒数后调用 resolve 函数,将 Promise 状态设置为已解决。

因此,当你调用 sleep 函数时,它会创建一个等待指定时间后才解决的 Promise 对象。

在 example 函数中,由于 sleep 函数返回的是一个 Promise,我们可以使用 await 关键字来等待这个 Promise 的解决。

await 关键字可以暂停函数的执行,直到 Promise 解决为止。

这就是为什么在 example 函数中使用 await sleep(1000);

可以使函数等待 1000 毫秒后再继续执行。 因此,使用 await 可以在异步操作完成后继续执行后续的代码,等同于在 Promise 被解决时调用 resolve 函数。

parseint

这两行代码在处理上是不同的,因为 parseInt 函数的行为和预期可能会导致不同的结果。

1.["1", "2", "3"].map(parseInt): 这行代码的执行会导致意外的结果。map 方法会将数组中的每个元素作为参数传递给 parseInt 函数,并调用它。

parseInt 函数接受两个参数,第一个参数是要转换的字符串,第二个参数是进制数。

但是,map 方法传递的第二个参数是元素的索引而不是进制数。

因此,实际执行的是 parseInt("1", 0), parseInt("2", 1), parseInt("3", 2)。

其中 parseInt("1", 0) 的结果是 1,

parseInt("2", 1) 的结果是 NaN,因为基数为 1 时,无法解析数字 2,

parseInt("3", 2) 的结果是 NaN,因为无法解析 3 为二进制数。

所以最终的结果是 [1, NaN, NaN]。 2.["1", "2", "3"].map(num => parseInt(num)): 这行代码使用了箭头函数,将每个元素作为参数传递给 parseInt 函数,并将结果放入新的数组中。

因为箭头函数没有第二个参数,

所以 parseInt 只接收到一个参数,即要转换的字符串。

这样,parseInt 函数会按照十进制解析每个字符串,结果会是 [1, 2, 3]。

你可能感兴趣的:(前端,javascript,开发语言)