Javascript 正在等待解析无参数承诺的函数
我有一个函数,它解析承诺而不传递任何参数:Javascript 正在等待解析无参数承诺的函数,javascript,ecmascript-6,ecmascript-2016,Javascript,Ecmascript 6,Ecmascript 2016,我有一个函数,它解析承诺而不传递任何参数: const checkUser = (user)=> { let promise = Parse.Promise(); if(user.success){ promise.resolve(); } else { promise.reject("Error"); } } 问题是,在我阅读的所有教程中,它们都将返回值指定给变量,如下所示: let response = await c
const checkUser = (user)=> {
let promise = Parse.Promise();
if(user.success){
promise.resolve();
} else {
promise.reject("Error");
}
}
问题是,在我阅读的所有教程中,它们都将返回值指定给变量,如下所示:
let response = await checkUser(user);
在上述情况下,我是否可以在不将结果赋给变量的情况下等待承诺,或者不建议这样做?例如:
...
await checkUser(user);
...
是的,你完全可以做到。JavaScript仍将等待承诺的解决 这里是对的修改。在
wait
之后运行代码之前,它不会返回值,但仍会等待承诺得到解决
函数resolveAfter2Seconds(){
返回新承诺(解决=>{
setTimeout(resolve,2000);
});
}
(异步函数(){
控制台日志(1)
等待ResolveAfter2秒();
控制台日志(2);
})()
我认为没有承诺就解决承诺是一种不好的做法,因为这是获得结果的适当渠道。如果你不想得到结果,为什么要调用函数呢?不过,这可能主要适用于函数式编程
我是否可以在不将结果分配给变量的情况下等待承诺,或者不建议这样做
是的,你完全可以做到。如果你不需要对结果做任何事情,比如当你知道它总是
未定义的时候,你可以忽略它。我认为asignment不是强制性的,因为你可以做一些不返回任何东西的操作,比如等待实现。是的,如果你不在乎结果,您可以使用try{await}catch(e){…}
语法检查拒绝函数抛出的错误,您永远不必将表达式的结果分配给其他内容wait…
是一个表达式,就像foo()
或1+1
一样。我认为一个示例用例应该是等待数据库写入事务完成。您已经知道要发送的数据,您需要知道的是,在这种情况下,承诺是得到解决还是被拒绝。我不想说这是“坏习惯”,但它应该提出一个问题,即是否如你所说的那样,事实上这是必要的。此外,强制性的“我没有否决投票”可以简化为返回新承诺(resolve=>setTimeout(resolve,2000))
或者如果ESnext部分应用的提案已经实施,您甚至可以返回新承诺(setTimeout(?,2000))
。?
将函数调用转换为一个部分应用程序,看起来像x=>setTimeout(x,2000)
是的,但它实际上与函数无关,这只是表明您可以等待,而无需设置变量。如果你觉得你建议的代码更容易理解,请编辑我的答案。。。