UNPKG

@react-native-ohos/realm

Version:

Realm by MongoDB is an offline-first mobile database: an alternative to SQLite and key-value stores

55 lines 2.06 kB
"use strict"; //////////////////////////////////////////////////////////////////////////// // // Copyright 2022 Realm Inc. // // 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. // //////////////////////////////////////////////////////////////////////////// Object.defineProperty(exports, "__esModule", { value: true }); exports.TimeoutPromise = void 0; const errors_1 = require("./errors"); const PromiseHandle_1 = require("./PromiseHandle"); class TimeoutPromise { timer; handle = new PromiseHandle_1.PromiseHandle(); constructor(inner, { ms, message = `Waited ${ms}ms`, rejectOnTimeout = true } = {}) { if (typeof ms === "number") { this.timer = setTimeout(() => { if (rejectOnTimeout) { this.handle.reject(new errors_1.TimeoutError(message)); } else { this.handle.resolve(); } }, ms); } inner.then(this.handle.resolve, this.handle.reject).finally(() => { this.cancel(); }); } cancel() { if (this.timer !== undefined) { clearTimeout(this.timer); delete this.timer; } } then = this.handle.promise.then.bind(this.handle.promise); catch = this.handle.promise.catch.bind(this.handle.promise); finally = this.handle.promise.finally.bind(this.handle.promise); get [Symbol.toStringTag]() { return TimeoutPromise.name; } } exports.TimeoutPromise = TimeoutPromise; //# sourceMappingURL=TimeoutPromise.js.map