我运行了我的测试,但由于它在一个Docker容器中运行,我无法直接验证其结果。
如果在某个无处不在的应用程序中,比如您的浏览器,有一个方便的JavaScript运行时环境就好了...
/* 模拟函数 */
const delayLog = (...args) => new Promise((resolve) => {
setTimeout(() => {
console.log(...args);
resolve('token');
}, 10);
});
const importWallet = delayLog.bind(null, 'importWallet');
const addNetwork = delayLog.bind(null, 'addNetwork');
const connectWallet = delayLog.bind(null, 'connectWallet');
const sendToken = delayLog.bind(null, 'sendToken');
const context = { close: delayLog.bind(null, 'context.close') };
/* 测试函数 */
const asyncTest = async (params, page, extensionId) => {
try {
await importWallet(params.seedPhrase, page, extensionId);
await addNetwork({ networkName: 'BTC', page, extensionId });
await connectWallet(context, page);
return await sendToken({ page, params });
} finally {
await context.close();
console.log('🌂 浏览器正在关闭');
}
};
// 执行异步测试并打印结果
asyncTest({ seedPhrase: '橡子' }, 1, '.js').then(console.info);
通过控制台输出,您可以清楚地看到finally
块中的异步代码会在以return
语句解析承诺之前进行评估和等待。