Vue continues to execute the timeout method even after it has been successfully cleared

In an attempt to postpone an API call for fetching search results, I have implemented the use of setTimeout and clearTimeout methods in my Vue application.

A watcher has been set up on a search variable so that whenever it changes, the corresponding code executes as expected.

  watch: {
    search: function (search) {
        var self = this;
        if (search.length >= 1) {
            if (this.time) {
                console.log(this.time)
                clearTimeout(this.time);
                console.log(this.time)
            }
            this.time = setTimeout( self.searchAccounts, 500);
        } else {
          this.restoreAccounts()
        }
    },

The goal is to cancel the previous API call if the method is executed within the next 500ms. However, the problem arises when I quickly type 3 characters ("ABC"), resulting in 3 separate API calls with parameters q=A, q=AB, and q=ABC. It seems like the timer is not getting cleared properly. Any suggestions on how to resolve this issue?

Edit: Even after changing the setTimeout call to a reference, the issue of multiple function calls persists, leading to the execution happening 3 times.

Answer №1

The issue lies within the following code snippet:

this.time = setTimeout( self.searchAccounts(), 500);

Instead of providing a callback function as required by setTimeout(), you are passing the return value of searchAccounts().

To fix this, modify the code like so:

this.time = setTimeout( self.searchAccounts, 500);

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

Removing an item from a React (Hooks) array state: A step-by-step guide

In my code, I have a list of text inputs populated from an array and I am trying to delete a specific element based on its index. The issue I am facing is that even though the console log correctly shows the updated array without the removed element, visua ...

Learn the process of assigning the present date using the jQuery UI date picker tool

I am looking to implement the feature of setting the current date using Angular/Jquery UI date picker. I have created a directive specifically for this purpose which is shown below: app.directive('basicpicker', function() { return { rest ...

Steps for resolving the "endless redirection loop" issue in Sharepoint

I am currently learning Javascript and working on setting up a multi-language Sharepoint site. I am trying to implement a code into each page that checks the user's email and the language in the URL (Portuguese or Spanish) and then redirects according ...

What are the steps for utilizing a button instead of an input field that is not within a form?

I need assistance with setting up a navbar with a button that will submit a form in the body with the ID of album_form. Can anyone provide suggestions for what to include in the onclick attribute to achieve this functionality? <body> <header& ...

Is there a way I can utilize a for-loop and if statement in JavaScript to present the information accurately within the table?

My current task involves fetching data via AJAX and then using a for-loop and if-statement to determine which goods belong in each shopping cart. Once identified, I need to display these goods in separate tables corresponding to each customer. Although the ...

The specified instant cannot be located in 'moment' while attempting to import {Moment} from 'moment' module

Struggling in a reactJS project with typescript to bring in moment alongside the type Moment Attempted using import moment, { Moment } from 'moment' This approach triggers ESLint warnings: ESLint: Moment not found in 'moment'(import/n ...

The error message "Unable to retrieve property 'commands' of undefined (discord.js)" indicates that the specified property is not defined

As I try to incorporate / commands into my Discord bot, I encounter a persistent error: An issue arises: Cannot read property 'commands' of undefined Below is my main.js file and the problematic segment causing the error: Troublesome Segment c ...

In vue.js, when utilizing the select all method for checkboxes, it is important to ensure that disabled checkboxes are not

I am working on a project where I have a table containing a list of checkboxes. When I click on the select all function, it selects all checkboxes including the disabled ones. However, I need to exclude the disabled checkboxes from being selected. ...

Multipart form data processing without specifying files

I need help with uploading an image using node.js, express, and multiparty. My code is as follows: HTML <!DOCTYPE html> <html> <body> <form method="post" action="/img"> Select image to upload: <input type="file" name= ...

Encountering an issue with Sails.js while attempting to connect to a cloud-based

When using cloud MongoDB with a sails adapter, I encountered an error while running the app. Can someone assist me in resolving this issue? default: { adapter: 'sails-mongo', url: 'mongodb://USERNAME:<a href="/cdn-cgi/l/email-protec ...

Utilize a randomized dynamic base URL without a set pattern to display a variety of pages

I am intrigued by the idea of creating a dynamic route that can respond to user-generated requests with specific files, similar to how Github handles URLs such as www.github.com/username or www.github.com/project. These URLs do not follow a set pattern, ma ...

Switching the theme color from drab grey to vibrant blue

How can I change the default placeholder color in md-input-container from grey to Material Blue? I have followed the instructions in the documentation and created my own theme, but none of the code snippets seems to work. What am I doing wrong? mainApp. ...

Check out the source code of the file causing the redirection

Whenever I click on a URL, it triggers a redirect using the window.location function. I am curious to examine the code within this HTML file. Unfortunately, as it is constantly redirecting, I am finding it difficult to access the source code. Is there a w ...

Need to style today's date and selected date differently using react datepicker

I am currently working with the React Datepicker and I am facing an issue where two different styles need to be applied for the current date and a selected date. Specifically, I have defined a style for the current date as well as a separate style for whe ...

What are the risks and drawbacks of revealing your environment variables to the browser in NextJS?

Currently in the process of setting up Firebase v9 authentication within a NextJS application I am developing. Initially, I attempted to utilize Next's server-side environmental variables for my Firebase configuration but encountered issues with all e ...

Axios sends back HTML content in response for Laravel and VUE integration

Within my api.php file, I have implemented two routes: Route::get('resume-list/{templateID}', 'BasicController@getAllResumes'); Route::get('resume/single/{id}', 'BasicController@getResume'); The first route is fun ...

Is there a way to incorporate a text box in javascript that displays the retrieved reference count from the database?

I'm currently working on creating a functionality that retrieves rows with the same ID from a database and displays them in a text box. Below is the PHP code I've written for retrieving all the rows: PHP: <?php include_once('pConfig ...

Utilizing Animate Function in Framer Motion for Object Animation

I am currently experimenting with the Framer Motion library in an attempt to create interactive movement for objects when they are clicked. My goal is to be able to relocate a component to a specific destination regardless of its initial position. I'm ...

Getting event properties in a React component using the rest operator: A comprehensive guide

Can someone please assist me? I am new to TypeScript and struggling with how to use event props in my component. I have defined two props and need all my events as rest props. I encountered an error when trying to use my component with onClick event. The ...

Disabling the Entire Page Using Jquery

I've got this cool ajax function function do_ajax_request(t){ var form = $('#edit_'+t); var loadingDiv = $('#loading_'+t); $.ajax({ url: form.attr("action"), type: "POST", data: form.serialize(), cach ...