1/* 2 * Copyright (c) 2024-2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16/** 17 * This test checks functionallity that we can await for standalone promise 18 * that will be resolved in then callback of another promise 19 * that will be resolved in another coroutine 20 */ 21 22async function foo() {} 23 24let resolvePromiseFn: ((value: String) => void) | null = null; 25 26function main() { 27 let p1 = new Promise<String>((resolve: (value: String) => void): void => { 28 resolvePromiseFn = resolve; 29 }); 30 31 let p2 = foo(); 32 33 let p3 = p1.then<Number>((value: String): Number => { 34 assertEQ(value, "Panda"); 35 return 42; 36 }); 37 38 p2.then<void>((): void => { 39 resolvePromiseFn!("Panda"); 40 }); 41 42 let value = await p3; 43 assertEQ(value, 42); 44} 45