A promise is returned by the setTimeout function

I have written a function with two parameters:

  • parameter 1: a callback function,
  • parameter 2: time x (ms)

This function will execute the callback function after a specified period of time x milliseconds and also return a promise.

Below is my code example - it currently only logs 'Goodbye' after 1 second:

function doAfter(func, time) {
  var promise = new Promise(function(resolve, reject) {
    setTimeout(function(data) {
      resolve(data);
    }, time);
  });
  return promise;
}

function sayHello() {
  console.log('Hello');
}

function sayGoodbye() {
  console.log('Goodbye');
}

doAfter(sayHello, 1000).then(sayGoodbye);

Expected functionality: wait for 1 second, then log 'Hello Goodbye'

Answer №1

In order to fix the issue, you must address the func() function. The variable data is not defined within the setTimeout function.

function executeAfter(func, time) {
  var promise = new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve(func());
    }, time);
  });
  return promise;
}

function greetMorning() {
  console.log('Good morning');
}

function bidFarewell() {
  console.log('Farewell');
}

executeAfter(greetMorning, 3000).then(bidFarewell);

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

Prevent users from using the browser back button after logging out in PHP

I need assistance with managing the browser back button. When a user logs out, I want to ensure that the session and cookies are destroyed. Below is the code I have written: index.php <!DOCTYPE html> <html lang="en"> <head> <scri ...

Modifying vertices in THREE.LineSegment: Adding and deleting

I am facing an issue with a THREE.LineSegments object, where I need to dynamically change the number of vertices. However, when I try to modify the geometry vertices array, the lines with removed vertices remain in place. Is there a way to remove vertices ...

Adding various image files to the canvas

I am facing an issue with my code where I need to find images inserted by the user into a div and then combine them into one image in a canvas when the "snap" button is clicked. While I can successfully locate, position, and resize the images inside the ca ...

Issue with displaying Youtube search API results on EJS template file

I'm currently trying to integrate the YouTube Search API into my website. However, when I make the API call from my route, the results are returned but the page is rendered before the results finish processing - likely due to the asynchronous behavior ...

Having trouble with a peculiar for_of loop issue in Node.js: struggling to iterate correctly

Currently immersed in a Python project, I find myself in need of retrieving data from a Node.js API. Despite my limited knowledge of Node.js, I attempted to write some code for this purpose. Here is the code snippet: const SneaksAPI = require('sneaks ...

Trigger an event prior to the loading of a div

I have been working on a jQuery code that needs to run just before a specific div is displayed on the page. Take a look at the snippet below as an example of what I am trying to achieve: $(document).ready(function(){ $('.article').on('m ...

Encountering issues with the Justify props in Material UI grid – how to troubleshoot and solve the problem

Can someone help me troubleshoot why justify is not working in this code block? <Grid container direction='column' alignItems='center' justify='center' spacing='1'> <Grid item xs={12}> <Ty ...

create new Exception( "Invalid syntax, expression not recognized: " msg );

Can someone assist me in identifying the issue at hand? Error: There seems to be a syntax error, and the expression #save_property_#{result.id} is unrecognized. throw new Error( "Syntax error, unrecognized expression: " msg ); Here is the c ...

The assignment of object properties seems to be failing in the outcome produced by Mongoose

After running a mongoose find query and storing the result in an object, I attempted to add a total coin value to each object by using the exec operation. However, when I printed the object on the console, it seemed that the value was not being assigned an ...

Prevent form submission when email is missing

function validateEmail(){ var TCode = document.getElementById('email').value; if(TCode.length==0) { email_info.innerHTML="This field is required"; return false; } email_info.innerHTML=" "; ...

Highchart mortgage calculator for accurate financial planning

I am looking to create a dynamic high chart similar to the one on bankrate.com, showcasing principal, balance, and interest over various years. Despite my efforts, I have been struggling to organize the data by year as demonstrated in the example above: ...

Implementing a delete functionality within a loop on a JavaScript object array

I have a JavaScript object with the following structure: var partner = { p_name: { value: partner_name, label: "Name" }, p_id: { value: partner_ID, label: "ID" }, p_status: { value: partner_status, label: "Status" }, p_email: { value: partner_emai ...

Issues with IE not recognizing the appendChild() Javascript method

Can someone please help me troubleshoot why this code snippet is not functioning properly in Internet Explorer but works fine in Firefox? I am fairly new to using the appendChild() method. <html> <head> <script type='text/javascript&ap ...

Error: Unable to submit form with jQuery due to timeout issue - e[h] function not recognized

This question has surfaced on SO previously without any solution, maybe due to a different scenario Below is the form in question <form id="testSubmit" method="post" action="submit.php"> <!--The value of the following field will be collecte ...

Steps for integrating Stanford's NLP into a web application

I have successfully developed a project utilizing Stanford's NLP API and models. Now, I am looking to integrate this Java-based project onto the web. After seeing the demo provided by Stanford-NLP, I am curious about the process they use to achieve th ...

The concept of recursion in AngularJS directives

I developed a unique custom directive. angular.module('menu',[]) .directive('MenuDirective',function(){ return{ restrict:'E', replace:'true', scope:{ m ...

I am looking to create an engaging photo viewing experience by utilizing a modal to display each image in my gallery when clicked

I created a stunning image gallery featuring 13 photos that I discovered on W3Schools and customized to suit my own preferences. The gallery looks great, but there's an issue - only the first image can be opened using a modal window. I tried editing s ...

Retrieve a specific value in HTML <a> tag using JavaScript-Ajax in Django

I am currently working with Python 3 and Django. Within my HTML code, I have the following: {% for category in categories() %} <li class="c-menu__item fs-xsmall"> <a href="#" id="next-category"> {{ category}} & ...

Issue: Attempting to display array elements within a React Functional Component?

Encountering an issue while attempting to log array elements, receiving the error message: TypeError: Cannot read property '0' of undefined Interestingly, I am able to successfully log the project.tasks array object in the console. However, l ...

Ensuring that the text box only accepts the letters A, B, and C is essential for

Could you please help me with validating a text box? I would like to set it so that the user can only enter either A, B, or C. If they input D to Z or any other characters, I want a popup message to appear asking them to Enter A, B, or C. Would you recom ...