Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/45.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 如何在JS中实现'return'异步/等待?_Javascript_Async Await - Fatal编程技术网

Javascript 如何在JS中实现'return'异步/等待?

Javascript 如何在JS中实现'return'异步/等待?,javascript,async-await,Javascript,Async Await,我试图使这段代码(类方法)返回一个字符串 async sign() { const txt = 'ddddd'; const result = await crypto.createHash('md5').update(txt, 'binary').digest('hex'); return result; } 问题是它忽略了wait,并返回一个Promise。此函数的返回值用作HTTP请求头,而npmlog表示 apisign: Promise { 'faaa3f14

我试图使这段代码(类方法)返回一个
字符串

async sign() {
    const txt = 'ddddd';
    const result = await crypto.createHash('md5').update(txt, 'binary').digest('hex');
    return result;
}
问题是它忽略了
wait
,并返回一个
Promise
。此函数的返回值用作HTTP请求头,而npmlog表示

apisign: Promise { 'faaa3f1409977cbcd4ac50b5f7cd81ec' }
我看到Wireshark捕获的网络流量

apisign: [object Promise]

如何使
返回
尊重
等待
,或者如何编写它以使其返回
字符串

您不应按原样返回
异步函数的值,因为它是
承诺

在序列化它之前等待它。

总是

如果在另一个函数中调用
sign()
,则必须等待它,这需要使调用方函数也成为
异步
函数等等

最后,在顶级代码中,您必须使用常规的
.then().catch()
语法来等待承诺的解决:

sign()
    .then((result) => {
        // do something with the result (e.g. put it into the response header)
        console.log(result);
    })
    .catch((err) => {
        // something wrong happened and the Promise was rejected
        // handle the error
        console.log(`There was an error: ${err.message || err}`);
    });

您必须等待
异步
函数的响应

const getURL=(标题、页面)=>`https://jsonmock.hackerrank.com/api/movies/search/?Title=${title}&page=${page}`
const callService=async(标题、页面)=>{
let response=wait-fetch(getURL(title,page));
return wait response.json();
}
异步函数callApi(){
let data=wait callService('spiderman',1);
console.log(data.data.length);
}

callApi()
async函数f(){let promise=new promise((resolve,reject)=>{setTimeout(()=>resolve(“done!”),1000)});let result=wait promise;//等到promise解析(*)alert(result);//“done!”}
类似这样的东西吗?哦,我只是忘了将
wait
用作头构造方法。谢谢