Adjust the timing of observable delays on the fly using rxjs

Currently, I have a service which requests data and returns an Observable. To continuously replay this request after a delay time, I am utilizing the repeatWhen method as shown below:

this.delay = 2000;
var observ = this.myService.getData()
            .repeatWhen(completed => completed.delay(this.delay));
this.mySubscription = observ.subscribe(val => this.handleResponse(val));

My goal is to dynamically modify the value of the delay, perhaps within the handleResponse method. How can I go about achieving this?

Here's a rough example in pseudo code for what I aim to do:

private handleResponse(val: boolean) {
    if(val)
        this.delay += 2000;
}

Answer №1

When you use the code snippet below:

.repeatWhen(completed => completed.delay(this.delay));

Your observable has already been modified to retrieve its value from this.delay. Any subsequent changes made to this.delay will not impact the preceding repeatWhen. The observable is initially set with the value of delay, so it does not continuously fetch the value from this.delay.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

The watch function remains inactive until it is triggered by an event

My current issue involves using $watch for pagination on my page. Unfortunately, the data is not appearing until I click on one of the buttons. Below is the relevant code snippet: .controller('AppCtrl', function ($scope, $modal, Faq) { $sco ...

Replacing `any` in TypeScript when combining interfaces

Currently using Express and attempting to explicitly define res.locals. Issue arises as in the @types/express package, Express.Response.locals is declared as any, preventing me from successfully overwriting it: types/express/index.d.ts: declare namespace ...

Enhancing the internal styling of ngx-charts

While working on the ngx-charts Advanced Pie Chart example, I noticed that the numbers in my legend were getting cut off. Upon inspecting the CSS, I discovered that a margin-top of -6px was causing this issue: https://i.stack.imgur.com/oSho1.png After so ...

What is the method for closing an <iframe> element directly?

A web page called room.html contains a table with an onclick function named place(): function place() var x = document.createElement("IFRAME"); x.setAttribute("src", "loading.html"); document.body.appendChild(x); } What is ...

Implementing Custom Scroll Buttons in Bootstrap Modal Content

Trying to figure out how to create custom scroll up and down buttons for a Bootstrap 4 modal without the scrollbar that was hidden with CSS. I want to provide an easy scrolling option especially for those who might find using the mouse confusing. Is there ...

Execute a function every 10 seconds after it finishes running (JavaScript)

I am currently facing a challenge with a function that utilizes the "post" method to retrieve data from the server for processing. The amount of data retrieved varies, leading to longer completion times (around 30 seconds). My goal is to have this functi ...

Fetching the jquery variable within an HTML document: A step-by-step guide

Here is the content of my check.js JavaScript file, which includes a function: function fun2(userid) { $.ajax({ type: 'POST', url: 'ex.php', data: {userid: userid}, success: function (data) { ...

Experiencing issues with test timeouts in Angular while trying to log in

I'm having trouble writing an Angular e2e Protractor test. Every time I try to test a login with the correct email and password, I keep getting a timeout error. describe("login view", () => { const app = new App(); const login = new L ...

The Angular tutorial for the "Tour of Heroes" is experiencing issues with aligning the heroes' list properly

I am currently working on the Angular tour of heroes tutorial. However, I am facing an issue when trying to display the list of heroes as it appears like this: https://i.sstatic.net/AGnzJ.png It is strange because even though the CSS/HTML/TS code from the ...

Tips on harnessing the power of PhantomJS and node.js for web scraping

After successfully installing node-phantom using the command npm install node-phantom, I encountered an error when running this code: Cannot find module 'webpage' var webpage = require('webpage').create(), url = "https://www.exampl ...

Steps for positioning the date popup below the text field

My task in Angular 4 involves creating a date field that displays a date popup beneath it when clicked. See below for my code snippet: <div class="col-3"> <div class="form-group calenderForm calenderForm1"> <label for="templateName"& ...

Improving render speed in Angular 7 FormArray

Currently, I am in the process of developing an angular component that is responsible for rendering and modifying invoices. In order to edit the line items within the invoice, I have implemented a FormGroup containing a FormArray of line item forms: lineI ...

Coordinating the vertical scrolling of two div elements simultaneously. (scrolling both divs together)

I have a specific setup where I have a text box that is scrollable, and outside of this box are headings that correspond to different sections in the text. I am looking for a way to synchronize the scrolling of the text inside the box with the headings out ...

What could be causing my jQuery script to not load properly on the first attempt?

I have a jQuery script set up on this particular webpage just before the ending body tag. Here is the script: <script> $(document).ready(function(){ var demomain = $(".demo-bg section"); var demomainW = demomain.height()+ 150 ...

When sending large amounts of data using JQuery's ajax function with the POST method, it may not send the

While working on my Electron application, I encountered a problem with calling an API using the jQuery $.ajax function. When sending large data sets, part of the data was being truncated. However, when I tested the same request in POSTMAN, the server recei ...

Preventing event propagation in jQuery's click handler

Is it possible to prevent the propagation of a click event on a dynamically created div within its parent div? HTML <div id = "parent"> Some Stuff </div> Jquery $('#parent').click(function(){ $(this).append('<div class = ...

In the context of NextJs, the req.body is treated as an object within the middleware, but transforms

Here is the middleware function responsible for handling the origin and CORS: export async function middleware(request: NextRequest) { const requestHeaders = new Headers(request.headers) const origin = requestHeaders.get('origin') ?? '& ...

Ways to identify a modification in ag-grid when there is an update in my row data while transitioning from one component to another

I am currently working on a project using angular6 implementing ag-grid to display data from an angular dialog box. With multiple teams contributing, each creating their own components, I have encountered a unique situation that I am struggling to resolv ...

Ways to substitute a null value in ngFor

When the item value is null, an error occurs in the console and the functionality stops working. How can I verify or replace the null value with my own preferences? this.xx = this.broadCastService.events.subscribe((line: Line) => { this.configService ...

Angular is showing an error stating that the type 'EventEmitter' is not generic

As I follow along with a tutorial, I've come across the use of EventEmitter. The code snippet provided in the tutorial is as follows: @Output() ratingClicked: EventEmitter<string> = new EventEmitter<string>(); However, my Visual ...