3 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
但是,當(dāng)我想在承諾中使用它時(shí)
你永遠(yuǎn)不應(yīng)該在executor中創(chuàng)建另一個(gè)new PromisePromise 。相反,調(diào)用sleep周圍函數(shù)內(nèi)的函數(shù)f(您已經(jīng)標(biāo)記為async,大概是使用await關(guān)鍵字):
async function f(filename) {
await sleep(1000);
return new Promise((resolve, reject) => {
/* rest of function */
});
}
您的問題也是該(resolve, reject) => {…}函數(shù)不是async,因此嘗試在await內(nèi)部使用存在語法錯(cuò)誤(在嚴(yán)格模式下),并且還可能導(dǎo)致有關(guān).sleep之后的意外令牌的錯(cuò)誤消息await。

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
您好嘗試使用下面的代碼在返回代碼中添加異步,因?yàn)槟诜祷刂惺褂玫却?/p>
function sleep(ms) {
return new Promise((resolve) => {
console.log('inside sleep');
setTimeout(resolve, ms);
});
}
function f(filename) {
return new Promise( async(resolve, reject) => {
await sleep(7000);
/*
rest of function
*/
});
}

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
嘗試將函數(shù) f 中的 return new Promise((resolve, reject) => {}) 替換為 return new Promise(async(resolve, reject) => {})。我希望它能解決你的問題
async function f(filename) {
return new Promise(async (resolve, reject) => {
await sleep(1000);
/*
rest of function
*/
});
}
添加回答
舉報(bào)