我编写了以下代码,以从Apiseeds歌词api中检索歌曲歌词。
const apiseeds = require("apiseeds-lyrics");
const apiseedskey = "MY_API_KEY";
async function getLyrics(artistName, songName)
{
return await apiseeds.getLyric(apiseedskey, artistname, songName,
(response) => {
return response;
});
}
var artist = "Darius Rucker";
var title = "Wagon Wheel";
var lyrics = await getLyrics(artist, title)
console.log(lyrics);
我还应该提到,第二个代码块包含在具有异步回调函数的eventEmitter.on事件内。
只要代码运行,我都会在控制台中得到undefined
。
答案 0 :(得分:1)
async
和await
仅可用于处理返回Promises(而非回调)的异步函数。您应该可以将呼叫转换为使用Promises或使用其他库。
我们使用await
的主要原因是在继续执行代码之前等待承诺解决:
const result = await codeThatReturnsPromise()
console.log(result)
我们可以将您的代码转换为此:
// async here means it returns a promise
async function getLyrics(artistName, songName)
{
return new Promise((resolve, reject) => {
apiseeds.getLyric(apiseedskey, artistname, songName, (response) => resolve(response))
})
}
var artist = "Darius Rucker";
var title = "Wagon Wheel";
var lyrics = await getLyrics(artist, title)
console.log(lyrics);