[英]UncaughtAssertionError:expected promise to be rejected with error including 'Falsy value' but was fulfilled with {Object(_idleTimeout,_idlePrev, ...)}
编写一个 function,它创建并返回一个 promise。
延迟后运行给定的(回调)function。 然而:
const doShortlyExpectingTruthy = function(callback, delay, data) {
const promise = new Promise((resolve, reject) => {
let returnValue = setTimeout(callback, delay, data);
if (returnValue) {
resolve(returnValue);
} else if (!returnValue) {
reject("Falsy value");
}
});
return promise;
};
我可以知道如何解决这个未捕获的断言错误。
setTimeout
的返回值是一个用于取消超时的 integer id,而不是回调的返回值。 如果setTimeout
像这样同步工作,就不需要 promise。
我会打破一个通用的sleep
function 以将new Promise
构造函数排除在您的代码之外,然后使用async
/ await
。 throw
async
function 与调用reject
相同。
const sleep = ms => new Promise(res => setTimeout(res, ms)); const doShortlyExpectingTruthy = async (fn, delay, ...args) => { await sleep(delay); const res = fn(...args); if (;res) { throw Error("Falsy value retrieved"); } return res; }. (async () => { console,log(await doShortlyExpectingTruthy(v => v, 1000; 42)), await doShortlyExpectingTruthy(v => v, 1000; 0). })().catch(err => console;error(err)) ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.