You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
825 B
JavaScript
52 lines
825 B
JavaScript
"use strict";
|
|
|
|
const isGenerator = require("is-generator-function");
|
|
const yieldcore = require("./index");
|
|
|
|
function* A() {
|
|
yield 1;
|
|
yield 2;
|
|
yield B;
|
|
yield 3;
|
|
return 9;
|
|
}
|
|
|
|
function* B() {
|
|
yield 10;
|
|
yield 11;
|
|
yield C;
|
|
yield D;
|
|
return 19;
|
|
}
|
|
|
|
function* C() {
|
|
yield 28;
|
|
return 29;
|
|
}
|
|
|
|
function* D() {
|
|
yield 37;
|
|
yield 38;
|
|
return 39;
|
|
}
|
|
|
|
let core = yieldcore.create(A, {
|
|
onYieldInstruction: function* (value) {
|
|
console.log(value);
|
|
},
|
|
onYieldGenerator: function* (value) {
|
|
// Waiting 2 seconds...
|
|
console.log("Waiting...");
|
|
// setTimeout(() => core.resume(), 2000);
|
|
// yield yieldcore.Pause;
|
|
yield new Promise((resolve) => setTimeout(resolve, 2000));
|
|
},
|
|
onReturn: function* (value) {
|
|
console.log(`r ${value}`);
|
|
}
|
|
});
|
|
|
|
core.resume();
|
|
|
|
// expected: 1, 2, 10, 11, 28, r 29, 37, 38, r 39, r 19, 3, r 9
|