v8/test/mjsunit/es6/promise-resolve-thenable-job.js

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

128 lines
2.5 KiB
JavaScript
Raw Normal View History

// Copyright 2018 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(function() {
let resolve;
let onFulfilledValue;
const p = new Promise(r => resolve = r);
resolve(Promise.resolve(1));
p.then(
v => {
onFulfilledValue = v;
},
e => {
assertUnreachable();
});
setTimeout(_ => assertEquals(1, onFulfilledValue));
})();
(function() {
let resolve;
let onRejectedReason;
const p = new Promise(r => resolve = r);
resolve(Promise.reject(1));
p.then(
v => {
assertUnreachable();
},
e => {
onRejectedReason = e;
});
setTimeout(_ => assertEquals(1, onRejectedReason));
})();
(function() {
let onFulfilledValue;
(async () => Promise.resolve(1))().then(
v => {
onFulfilledValue = v;
},
e => {
assertUnreachable();
});
setTimeout(_ => assertEquals(1, onFulfilledValue));
})();
(function() {
let onRejectedReason;
(async () => Promise.reject(1))().then(
v => {
assertUnreachable();
},
e => {
onRejectedReason = e;
});
setTimeout(_ => assertEquals(1, onRejectedReason));
})();
(function() {
let resolve;
let onFulfilledValue;
const p = new Promise(r => resolve = r);
resolve({
then(onFulfilled, onRejected) {
onFulfilled(1);
}
});
p.then(
v => {
onFulfilledValue = v;
},
e => {
assertUnreachable();
});
setTimeout(_ => assertEquals(1, onFulfilledValue));
})();
(function() {
let resolve;
let onRejectedReason;
const p = new Promise(r => resolve = r);
resolve({
then(onFulfilled, onRejected) {
onRejected(1);
}
});
p.then(
v => {
assertUnreachable();
},
e => {
onRejectedReason = e;
});
setTimeout(_ => assertEquals(1, onRejectedReason));
})();
(function() {
let onFulfilledValue;
(async () => ({
then(onFulfilled, onRejected) {
onFulfilled(1);
}
}))().then(
v => {
onFulfilledValue = v;
},
e => {
assertUnreachable();
});
setTimeout(_ => assertEquals(1, onFulfilledValue));
})();
(function() {
let onRejectedReason;
(async () => ({
then(onFulfilled, onRejected) {
onRejected(1);
}
}))().then(
v => {
assertUnreachable();
},
e => {
onRejectedReason = e;
});
setTimeout(_ => assertEquals(1, onRejectedReason));
})();