gx
chenyc
2025-02-12 ea42ff3ebee1eeb3fb29423aa848a249441db81c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/**
 * @license
 * Copyright 2018 Google LLC. All Rights Reserved.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * =============================================================================
 */
import * as tf from './index';
import { ALL_ENVS, describeWithFlags } from './jasmine_util';
function isFloat(num) {
    return num % 1 !== 0;
}
describeWithFlags('nextFrame', ALL_ENVS, () => {
    it('basic usage', async () => {
        const t0 = tf.util.now();
        await tf.nextFrame();
        const t1 = tf.util.now();
        // tf.nextFrame may take no more than 1ms to complete, so this test is
        // meaningful only if the precision of tf.util.now is better than 1ms.
        // After version 59, the precision of Firefox's tf.util.now becomes 2ms by
        // default for security issues, https://caniuse.com/?search=performance.now.
        // Then, this test is dropped for Firefox, even though it could be
        // set to better precision through browser setting,
        // https://github.com/lumen/threading-benchmarks/issues/7.
        if (isFloat(t0) || isFloat(t1)) {
            // If t0 or t1 have decimal point, it means the precision is better than
            // 1ms.
            expect(t1).toBeGreaterThan(t0);
        }
    });
    it('does not block timers', async () => {
        let flag = false;
        setTimeout(() => {
            flag = true;
        }, 50);
        const t0 = tf.util.now();
        expect(flag).toBe(false);
        while (tf.util.now() - t0 < 1000 && !flag) {
            await tf.nextFrame();
        }
        expect(flag).toBe(true);
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlcl91dGlsX3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZmpzLWNvcmUvc3JjL2Jyb3dzZXJfdXRpbF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sRUFBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRCxTQUFTLE9BQU8sQ0FBQyxHQUFXO0lBQzFCLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELGlCQUFpQixDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO0lBQzVDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXpCLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsMEVBQTBFO1FBQzFFLDRFQUE0RTtRQUM1RSxrRUFBa0U7UUFDbEUsbURBQW1EO1FBQ25ELDBEQUEwRDtRQUMxRCxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDOUIsd0VBQXdFO1lBQ3hFLE9BQU87WUFDUCxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2QsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3pDLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMTggR29vZ2xlIExMQy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqL1xuXG5pbXBvcnQgKiBhcyB0ZiBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7QUxMX0VOVlMsIGRlc2NyaWJlV2l0aEZsYWdzfSBmcm9tICcuL2phc21pbmVfdXRpbCc7XG5cbmZ1bmN0aW9uIGlzRmxvYXQobnVtOiBudW1iZXIpIHtcbiAgcmV0dXJuIG51bSAlIDEgIT09IDA7XG59XG5cbmRlc2NyaWJlV2l0aEZsYWdzKCduZXh0RnJhbWUnLCBBTExfRU5WUywgKCkgPT4ge1xuICBpdCgnYmFzaWMgdXNhZ2UnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdDAgPSB0Zi51dGlsLm5vdygpO1xuICAgIGF3YWl0IHRmLm5leHRGcmFtZSgpO1xuICAgIGNvbnN0IHQxID0gdGYudXRpbC5ub3coKTtcblxuICAgIC8vIHRmLm5leHRGcmFtZSBtYXkgdGFrZSBubyBtb3JlIHRoYW4gMW1zIHRvIGNvbXBsZXRlLCBzbyB0aGlzIHRlc3QgaXNcbiAgICAvLyBtZWFuaW5nZnVsIG9ubHkgaWYgdGhlIHByZWNpc2lvbiBvZiB0Zi51dGlsLm5vdyBpcyBiZXR0ZXIgdGhhbiAxbXMuXG4gICAgLy8gQWZ0ZXIgdmVyc2lvbiA1OSwgdGhlIHByZWNpc2lvbiBvZiBGaXJlZm94J3MgdGYudXRpbC5ub3cgYmVjb21lcyAybXMgYnlcbiAgICAvLyBkZWZhdWx0IGZvciBzZWN1cml0eSBpc3N1ZXMsIGh0dHBzOi8vY2FuaXVzZS5jb20vP3NlYXJjaD1wZXJmb3JtYW5jZS5ub3cuXG4gICAgLy8gVGhlbiwgdGhpcyB0ZXN0IGlzIGRyb3BwZWQgZm9yIEZpcmVmb3gsIGV2ZW4gdGhvdWdoIGl0IGNvdWxkIGJlXG4gICAgLy8gc2V0IHRvIGJldHRlciBwcmVjaXNpb24gdGhyb3VnaCBicm93c2VyIHNldHRpbmcsXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2x1bWVuL3RocmVhZGluZy1iZW5jaG1hcmtzL2lzc3Vlcy83LlxuICAgIGlmIChpc0Zsb2F0KHQwKSB8fCBpc0Zsb2F0KHQxKSkge1xuICAgICAgLy8gSWYgdDAgb3IgdDEgaGF2ZSBkZWNpbWFsIHBvaW50LCBpdCBtZWFucyB0aGUgcHJlY2lzaW9uIGlzIGJldHRlciB0aGFuXG4gICAgICAvLyAxbXMuXG4gICAgICBleHBlY3QodDEpLnRvQmVHcmVhdGVyVGhhbih0MCk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnZG9lcyBub3QgYmxvY2sgdGltZXJzJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBmbGFnID0gZmFsc2U7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBmbGFnID0gdHJ1ZTtcbiAgICB9LCA1MCk7XG4gICAgY29uc3QgdDAgPSB0Zi51dGlsLm5vdygpO1xuICAgIGV4cGVjdChmbGFnKS50b0JlKGZhbHNlKTtcbiAgICB3aGlsZSAodGYudXRpbC5ub3coKSAtIHQwIDwgMTAwMCAmJiAhZmxhZykge1xuICAgICAgYXdhaXQgdGYubmV4dEZyYW1lKCk7XG4gICAgfVxuICAgIGV4cGVjdChmbGFnKS50b0JlKHRydWUpO1xuICB9KTtcbn0pO1xuIl19