Javascript nodejs中const函数中的承诺
这是我的职责Javascript nodejs中const函数中的承诺,javascript,node.js,promise,async-await,Javascript,Node.js,Promise,Async Await,这是我的职责 const f = (value,err) => { if(!value === Number){ throw err; } return (value); } 使用promissions,我想返回一个parametervalue的对象,等待一段时间后,它将返回number中的参数。这是可能的吗?承诺本身不会做任何事情,也不会使任何事情在承诺本身和承诺本身都是异步的(除了承诺的反应总是异步的)。承诺只是一种标准化的方式,用于报告(可能)异步的事情的完成
const f = (value,err) => {
if(!value === Number){
throw err;
}
return (value);
}
使用promissions,我想返回一个parametervalue的对象,等待一段时间后,它将返回number中的参数。这是可能的吗?承诺本身不会做任何事情,也不会使任何事情在承诺本身和承诺本身都是异步的(除了承诺的反应总是异步的)。承诺只是一种标准化的方式,用于报告(可能)异步的事情的完成情况。所以你的问题的字面答案是:不,你不能用承诺来做这件事,不能靠承诺本身。您必须将它与类似于
setTimeout
或类似的东西结合起来
还要注意,如果(!value==Number)
总是false。它的计算如下:!值
,求反值
的值,然后求反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上注册的
然后
、捕获
、或最后
回调的调用。下面是我所说的“承诺反应是异步的”的一个例子:
console.log(“在创建承诺之前”);
新承诺(解决=>{
log(“在承诺执行器函数内”);
决心(42);
})
.然后(值=>{
log(`Promise reaction run,value=${value}`);
});
console.log(“创建承诺后”)代码>承诺本身不会做任何事情,也不会使任何事情在承诺本身和承诺本身都是异步的(除了承诺的反应总是异步的)。承诺只是一种标准化的方式,用于报告(可能)异步的事情的完成情况。所以你的问题的字面答案是:不,你不能用承诺来做这件事,不能靠承诺本身。您必须将它与类似于setTimeout
或类似的东西结合起来
还要注意,如果(!value==Number)
总是false。它的计算如下:!值
,求反值
的值,然后求反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上注册的然后
、捕获
、或最后
回调的调用。下面是我所说的“承诺反应是异步的”的一个例子:
console.log(“在创建承诺之前”);
新承诺(解决=>{
log(“在承诺执行器函数内”);
决心(42);
})
.然后(值=>{
log(`Promise reaction run,value=${value}`);
});
console.log(“创建承诺后”)
FWIW,我将在我的新书《JavaScript:新玩具》第8章中详细介绍承诺,如果您感兴趣,请访问我个人资料中的链接。谢谢@TJCrowder。这很有帮助。我错过了setTimeout部分。FWIW,我在新书《JavaScript:新玩具,我个人资料中的链接》(如果您感兴趣)第8章中详细介绍了承诺。谢谢@tjcrower。这很有帮助。我错过了设置超时部分。