Hey,
ich habe Probleme mit Promise (getestet mit node 11.1 (Debian) und 10.10 (Windows)).
Im Bsp 1 geht er weder in then noch in catch rein, beim Bsp 2 kommt nur "run test1"...
Wenn ich den resolve() allerdings mit einem 0ms setTimeout ausführe, funktioniert alles.
Jemand eine Idee woran es liegen könnte? In Node.js funktioniert es ohne Probleme.
JavaScript
let test;
async function test1() {
if (test) {
return test;
}
return await new Promise((resolve) => {
test = { test: 1 };
resolve(test);
});
}
function test2() {
if (test) {
return new Promise((resolve) => {
resolve(test);
});
}
return new Promise((resolve) => {
test = { test: 1 };
resolve(test);
});
}
// Bsp 1
mp.events.add('test', () => {
console.log(Date.now(), 'run test2');
test2().then(() => {
console.log(Date.now(), 'OK 2!');
}).catch(() => {
console.log(Date.now(), 'FAILED!');
});
});
// Bsp 2
mp.events.add('test', async () => {
console.log(Date.now(), 'run test1');
try {
await test1();
console.log(Date.now(), 'OK 1!');
}
catch (e) {
console.log(Date.now(), 'FAILED!');
}
});
Alles anzeigen