nodejs 中 const 函数中的承诺

这是我的功能


 const f = (value,err) => {

  if(!value === Number){

    throw err;

  }

  return (value);

}

使用 promises 我想返回一个参数值的对象,等待一段时间后它将返回number中的参数。那可能吗?


慕村9548890
浏览 118回答 1
1回答

FFIVE

promise 本身不做任何事情,它本身也不做任何异步操作(除了 promise反应总是异步的)。promise 只是一种标准化的方式来报告(可能)异步的事情的完成。所以你的问题的字面答案是:不,你不能使用承诺来做到这一点,而不是靠它自己。您必须将它与类似setTimeout或类似的东西结合起来。另请注意,这if (!value === Number)始终是错误的。它的计算方式如下:!value,否定 的值value,然后x === Number,这将始终为 false,因为没有任何值在被否定时变成函数Number。但是,例如,如果你想检查某物是否是数字但在 100 毫秒内没有响应:const f = (value, err) => {    return new Promise((resolve, reject) => {        setTimeout(() => {            if (typeof value !== "number") {                reject(err);            } else {                resolve(value);            }        }, 100);    });};除了承诺之外,还有两个重大变化:用于setTimeout引入异步性,以及将条件更改if为不会总是错误的东西(我可能猜对了也可能没有猜对你想要的东西:-))¹ promise 反应是对在 promise 上注册的then,catch或callback 的调用。finally这是我所说的“承诺反应是异步的”的例子:console.log("Before creating the promise");new Promise(resolve => {    console.log("Inside the promise executor function");    resolve(42);}).then(value => {    console.log(`Promise reaction ran, value = ${value}`);});console.log("After creating the promise");该代码具有以下输出:Before creating the promiseInside the promise executor functionAfter creating the promisePromise reaction ran, value = 42请注意,除了对回调的调用then(promise 反应)之外,一切都是同步的,根据规范,回调总是异步完成的,即使(如本例)在将反应添加到其中时 promise 已经确定。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript