Is there a way to create a function that is able to return both a value and a promise

Assume I need to fetch a value only if an object is already present in my model. Otherwise, I should retrieve the output of an endpoint service:

model.getDoohkyById = function( id ){
    if( this.data ) {
        if( this.data.length > 0) {
            for( var i =0; i < this.data.length; i++){
                if( this.data[i].id === id ){
                    //this provides a return value
                    return this.data[i];
                }
            }
        }
    }

    // this provides a promise
    return this.service.getBy('id',id);
}

In what way can I structure the initial return value within the scope of a promise? This way, I can execute it without encountering the error object has no method 'then'?

DoohkyModel.getDoohkyById(this.doohkyId).then( function(result){
      that.doohky = result.data;
});

Answer №1

If you are looking for a way to retrieve data using the $q service, you can utilize the following function (view documentation here):


model.getDoohkyById = function(id)
{
    if(this.data) {
        var deferred = $q.defer();
        if(this.data.length > 0) {
            for(var i = 0; i < this.data.length; i++)
            {
                if(this.data[i].id === id)
                {
                    // Return value
                    deferred.resolve(this.data[i]);
                    break;
                }
            }
        }
        return deferred.promise;
    }

    // Return promise
    return this.service.getBy('id', id);
}

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

Creating a visually appealing label by customizing it according to the child div

Can the label be styled based on whether the input is checked or not using CSS, or do I have to use JavaScript? <label class="filterButton"> <input name="RunandDrive" type="checkbox" value="1"> </label> ...

Searching for values within an array using the ".includes" method

I'm curious if there's a method to determine if a string contains any characters that are also present in an array? const array = ["cake", "hello", "ok"]; const string = "hello"; let result = string.include ...

Is it possible to verify whether a function contains a call to another function within it?

Consider a scenario in which we have the following nested functions: function function1(n) { function function2() { function function3() { function function4() { return n * 2; } return function4() } return ...

Attempting to implement a feature that will enable a blank row at the end of an input table with the help of

I'm currently working on a form that allows users to click a button to add a blank row to the bottom of a table. The issue I'm facing is that when I click the button, it redirects back to my index.php page instead of simply adding the row to the ...

What is the most effective way to display a star rating determined by the average score?

Currently, I am working on a project using Django and Jquery. The task at hand is to display hotel ratings with stars colored in orange based on an average score obtained from user votes. Let me provide you with an example: score = 8 vote= 2 average = 4 T ...

An A-frame that continually animates a glTF model to move to the position of the camera within the A-frame

I'm currently working on a virtual reality scene using A-frame () and I'm trying to figure out how to animate a gltf model so that it always follows the camera. Essentially, I want the model to move along with the player's movements. For exa ...

I am having trouble getting the color, metalness, lights, and shaders to work properly in Three JS on my

I attempted to create a simple code using Three.js for a red colored torus with a point light and a textured surface, but unfortunately, all I achieved was a black torus that rotates. It seems like the elements in this code are not functioning as expecte ...

Use PipeTransform to apply multiple filters simultaneously

Is it possible to apply multiple filters with PipeTransform? I attempted the following: posts; postss; transform(items: any[]): any[] { if (items && items.length) this.posts = items.filter(it => it.library = it.library ...

Can anyone provide guidance on how to calculate the total sum of a JavaScript array within an asynchronous function?

Currently, I am working with Angularjs Protractor for end-to-end testing and faced an issue while trying to calculate the sum of values in a column. Although I am able to print out each value within the loop successfully, I am struggling to figure out ho ...

Exploring related models in the MEAN stack journey

I’m currently working on setting up a model association in MEAN framework where an Epic can have multiple Tasks associated with it. I typically create the Epic first and then link it to tasks when creating them. The task data model is structured as follo ...

What is the most effective method for defining 2 routes that point to the same component?

Although it may seem straightforward, I'm struggling to find the most efficient method for this particular scenario in Vue.js. I am using Vue Cli 3 and I need to have multiple routes leading to the same Home page within the application. The idea is ...

Is there a way to modify the displayed value of json_encode() with jQuery?

I am using the json_encode() function to insert data into the database. How can I retrieve just the values of name_units from the units row in the database? This is how the output looks like in PHP code (generated by json_encode()): my_table=>units=& ...

Is it possible to dynamically fetch a factory object at runtime in AngularJS?

Is there a way to dynamically retrieve a specific factory object without relying on dependency injection? For example, if I know the module name and factory name, is it possible to fetch the factory object directly? Edit: Could $provide and $injector be h ...

Guide to obtaining scope within a nested directive

My problem lies in a nested directive within my code. I am attempting to pass a function from the nested directive to my controller, but for some reason, the function is not being triggered. Here is an excerpt of my main directive HTML: <div class="pa ...

Leverage AngularJS to dynamically load CSS stylesheets using ng-repeat

I have organized my stylesheets into separate modules for each include, and I am trying to dynamically load them. However, I am facing some difficulties as when they are rendered, all I see is the following markup for each sheet that should be loaded: < ...

Finding and choosing a date from an ng-model datepicker using Selenium Webdriver - a guide

I am encountering an issue where I can open the date picker pop-up calendar with a click, but I cannot select a specific date from it. This is due to the input field being read-only, which means that any input provided through sendkeys or JavascriptExecuto ...

Guide to making a slider menu using html, css, and javascript

Just dipping my toes into the world of web development. I'm intrigued by the idea of creating a "slider menu" where users can view and select options by clicking on next or previous buttons (see example image below). While I've got some basic HTM ...

Unable to upload a file to an email using the mandrillapp JSON API

Having trouble sending an email with an attached document via the Mandrillapp JSON API using the method send-template in JavaScript. The email sends successfully, including images attached to the images array. However, documents sent in the attachements ar ...

Guide on modifying an angular-material directive and compiling it

When I compile a native HTML element, everything works perfectly fine. However, when I try to compile an Angular Material element (md-button), the console displays an error message: "Error: [ngTransclude:orphan]". I've reached a point where I am com ...

How can I pass props from a page to components in Next.js using getServerSideProps?

Struggling to fetch the coingecko-api for accessing live bitcoin prices. Trying to pass return props of getServerSideProps to my <CalculatorBuy /> component within the <Main /> component. Facing issues when importing async function in calcula ...