2016-04-27 13 views
0

Ich habe when.js für Versprechen in node.js verwendet. Ich habe eine Funktion wie folgt aus:Wechsel von when.js zu ES6 Promises

function my_func() { 
    var d = when.defer(); 

    // Async actions simulated with timeout 
    setTimeout(function() { 
     //... 
     if(error) { 
      return d.resolve(error); 
     } 
     d.resolve(result); 
    }, 1000) 

    return d.promise; 
} 

Was ich würde wie so nennen:

my_func().then(
    function(res) { 
     //... 
    }, 
    function(err) { 
     // Handle error 
    } 
); 

Wie mache ich das Gleiche mit ES6 Versprechen?

Antwort

2

Ihre ursprüngliche Funktion einige Fehler in der if (error) Zustand hatte, also hier die aktualisierte Snippet:

function my_func() { 
    var d = when.defer(); 

    // Async actions simulated with timeout 
    setTimeout(function() { 
     //... 
     if(error) { 
      d.reject(error); 
     } 
     d.resolve(result); 
    }, 1000) 

    return d.promise; 
} 

die

function my_func() { 
    return new Promise(function (resolve, reject) { 
    //Async actions simulated with timeout 
    setTimeout(function() { 
     //... 
     if (error) { 
     reject(error); 
     } 
     resolve(result); 
    }, 1000); 
    }); 
} 
in

dreht

Dies ist inrelativ gut abgedeckt 210

2

Die Struktur ist ziemlich ähnlich:

function my_func() { 
    return new Promise(function(resolve, reject) { 
     setTimeout(function() { 
      if (error) { 
       reject('no'); 
      } 
      resolve('yes') 
     }, 1000); 
    }); 
} 
1
//Creating promise 
function my_func() { 
    return new Promise(function(resolve, reject) { 
     setTimeout(function() { 
     //... 
     if(error) { 
      reject(Error("Error Message")); 
     } 
     resolve("Success message") 
    }, 1000) 
    }); 
} 
//Using it 
my_func().then(function(response){ 
    console.log("Success!", response); 
}, function(err){ 
    console.error("Failed!", err); 
})