Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在等待解析无参数承诺的函数_Javascript_Ecmascript 6_Ecmascript 2016 - Fatal编程技术网

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)
是的,但它实际上与函数无关,这只是表明您可以等待,而无需设置变量。如果你觉得你建议的代码更容易理解,请编辑我的答案。。。