我尝试将callback
重写为async/await
,但是以下代码无法正常工作并导致评论行处于高CPU状态。
const kurento = require('kurento-client')
function getKurentoClient (kmsUrl) {
return new Promise((resolve, reject) => {
kurento(kmsUrl, (error, kurentoClient) => {
if (error) {
return reject(error)
} else {
return resolve(kurentoClient) // never returns
}
})
})
}
async function test () {
let result = await getKurentoClient('ws://localhost:8888/kurento')
console.log('done')
}
test()
答案 0 :(得分:3)
Promise.resolve(value)方法返回一个使用给定值解析的Promise对象。 如果该值是一个可用的(即具有“then”方法),则返回的promise将“跟随”那个,采用其最终状态;如果值是promise,则该对象成为对Promise.resolve的调用的结果;否则返回的承诺将用值来实现。
当promises使用
then
(又名then
ables(例如_kurentoClient
)解决其他承诺或内容时,他们必须等待then
本身
正如您所猜测的那样,kurento客户端具有then
功能(因此是可行的),因此Promise正试图解决它。因为一个错误(或者不是一个错误。老实说,我没有足够的研究来确定它)它会永远地解决它自己。
据我所知,似乎this kurento commit试图修复它,解决为“不可饶恕”。我看到提交来自31 Oct 2016
,但最新版本来自Sep 2016
,所以我认为未部署修复版本。