Angular refreshes a promise that already exists

I have a unique situation where my service returns a promise to the controller:

// .... within the service
this.RefreshData = function() {
    this.data = $q.all( {images: ...., tags: ....}); 
}
RefreshData ();

// .... in the controller
function() OnImages() {.....};
ImageSrv.data.then(OnImages());

However, there has been an unexpected event elsewhere and I need to refresh my controller. Let's say a directive triggers my service and initiates a refresh:

ImageSrv.RefreshData();

Due to this change in promise, OnImages no longer fires as expected. Would it be appropriate to handle this using a promise along with an event? Ideally, I would like to simply do something like

ImageSrv.data.refresh() 

This hypothetical method would reset the promise to "not resolved" status and attempt to resolve it again.

Answer №1

Promises do not have built-in awareness of changes. Once a promise resolves or rejects, it is considered complete. There is no inherent mechanism to inform the controller of any updates that may require re-running the OnImages function.

A possible solution could involve triggering an event that the controller can listen for, prompting it to execute OnImages again.

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

What is the best way to retrieve the fields from the JSON object generated by the API?

I'm having trouble displaying a specific field from the API response. While I can display the entire API response, I am struggling to show just one particular field of the object. Here is the API being used: The response received is as follows: { ...

Using the named function and function parameter to call `preventDefault()` and avoid the default

I want to incorporate an e.preventDefault() call in my event listener. My function, "voteNoClick", needs to receive a parameter named "direction". How can I pass both the direction parameter and the event object into the function, allowing me to include e. ...

Retrieve the input field value without triggering the form submission

Is there a way to retrieve the current value of an input field, and then display information from a database based on that value without needing to submit a form? For example, imagine filling out a profile form and receiving an error message next to a fie ...

Verify the occurrence of a search result and if it appears more than once, only show it once using JavaScript

Hello all. Currently, I am developing an online users script using NodeJS and SocketIO. The functionality works fine, however, I am encountering an issue where if a user connects from multiple browsers, windows, or devices, it displays duplicate results li ...

Breaking up an array of objects in JavaScript

I have an array of objects that I need to split based on the total amount. First, calculate the sum of the total amount, then split the array based on the total amount. If the total amount is greater than or equal to 4, they will be split and the key of th ...

Can you explain the significance of network activity groupings within the Firebug Net tab?

Can you explain the significance of different splitter lines on the Net tab in Firebug? In this screenshot, line 1 and 2 appear to be grouped together. However, line 3 stands alone. What do these groupings represent? ...

The error message "The 'save' property is not found on the 'CardType' type" indicates that there is no 'save'

Within a function, I am manipulating the properties of an object of type CardType. I need to update these changes in my MongoDB database using the document.save() function. However, I have encountered an issue with my code: import { Types } from 'mong ...

Is it possible to display the command output in Grunt as it runs?

When I run this command, I am not seeing any output and it runs endlessly: grunt.registerTask('serve', function () { var done = this.async(); grunt.util.spawn({ cmd: 'jekyll', args: ['serve'], ...

Angular feature that shows only the selected value in a custom dropdown

Using a custom dropdown created with div, I encountered an issue when receiving an object response cards from the API. The problem arises when trying to iterate through the data using the custom dropdown - after selecting an item, the next clicked dropdown ...

Loading JavaScript in the background using Java and HtmlUnit

I am currently facing a challenge while navigating a website using HtmlUnit. This particular website adjusts certain buttons and displays or hides certain elements based on JavaScript events. For instance, there is a text input box along with a button th ...

Persistent table header and fixed column in table

Trying to create an HTML table with a fixed header and fixed first two columns, but encountering issues with the table displaying at the top of the page instead of below a div with a yellow background. Looking for a solution similar to the one shown in the ...

How can I delete an individual HTML element that does not have a class or ID?

I am currently working with a theme that cannot be altered due to automatic update requirements. The theme includes the following HTML code snippet: <div class="dropdown-menu"> <a href="#">Profile</a> | <a href="#">Logout</a> ...

Getting started with ASP.NET vNext 1.0.0-rc1-update1 live stream!

We began working on the project in beta 7 and successfully implemented most of the functionality in version 1.0.0-rc1-update1. Our primary authentication method is MVC and we use web API to provide data. The majority of the functionality resides in client- ...

Maintaining the sequence of a PHP associative array when transferring it to JavaScript via ajax

Below is the code from my PHP file: GetUserArray.php $Users = array('7'=>'samei', '4'=>"chaya", '10'=>'abetterchutia'); echo json_encode($Users); Here is the AJAX request I am using: $.ajax({ ...

Enhancing a skinned mesh with a new texture

After importing a basic extruded cube with 2 bones and a material from Blender to threejs using the threejs exporter, everything seemed to be working fine. I was able to rotate the bones, manipulate the mesh, and apply materials correctly. However: The pr ...

Understanding the behavior of Bootstrap input-groups when containing hidden sub elements

In a scenario where a button and an input field are enclosed within a div with a bootstrap class named input-group, they expand to occupy the entire width of the enclosing element. However, if the button is hidden, the input field unexpectedly contracts to ...

The Owl carousel seems to be malfunctioning as there are no error messages displayed and the div containing it disappears unexpectedly

I'm having an issue with Owl carousel. I've included the necessary owl.carousel.css, owl.carousel.js, and owl.theme.css files. Created a div with the class "owl-carousel", and called the function $(".owl-carousel").owlCarousel();. However, after ...

Extract the content inside an HTML <a> tag with a specified class and auto-populate it into a different text area

I found an HTML tag that is being generated by a WordPress plugin and it contains a random link. My goal is to automatically retrieve this generated link and place it in a textarea within a contact form. The generated code with the link (cannot be modifie ...

What is the best way to display the value of an option in an HTML element

I would like to include an h2 element that displays an updated price based on the selected option value. Below is my current code snippet: <select name="price"> <option value="2799"> 1-6 installments</opt ...

Utilizing an EllipseCurve for Extrusion Paths in Three.js - How is it Done?

The issue: I'm struggling to convert an EllipseCurve into a path that can be extruded along in Three.js. When I try to use the EllipseCurve as the extrude path, nothing shows on the screen even though there are no errors. However, if I switch it to a ...