2016-12-11 4 views
0

zurückschicke Ich benutze Javascript-Bibliothek, die api hat.Wie man Funktion erzeugt, die Versprechen von der Rückruffunktion

libapi.callnetwork(arg1,callback(data){ 
//handle data 
} 

dann erstellen i Servicefunktion api wie dieser

myFunction():Promise<any>{ 
    libapi.callnetwork(arg1,callback(data){ 
    return new Promise(resolve=>resolve(data)); 
    }) 
} 

myFunction nennen Fehler bekommen, weil es Versprechen zurückgeben muß oder als nichtig erklären. Wie kann ich Funktion schaffen, die Versprechen von dieser API zurückgeben?

Antwort

8

Die Idee ist nicht das Versprechen aus dem Innern des Rückruf zu erstellen und zurück, aber es in der Außen Funktion (wo man return es) zu erstellen und nur Entschlossenheit das Versprechen vom Rückruf:

myFunction():Promise<any>{ 
    return new Promise(resolve => { 
    libapi.callnetwork(arg1, callback(data){ 
     resolve(data); 
    }); 
    }); 
} 

oder einfach

myFunction():Promise<any>{ 
    return new Promise(resolve => { 
    libapi.callnetwork(arg1, resolve); 
    }); 
} 
-1
myFunction():Promise<any>{ 
    let resolveFn = (data) => data; 
    libapi.callnetwork(arg1, resolveFn); 
    return new Promise(resolveFn); 
} 
0

Vanille, greifen die Entschlossenheit Funktion

let myFunction =() => { 
    let resolve; 
    let promise = new Promise(r => resolve = r); 
    libapi.callnetwork(arg1, resolve); 
    return promise; 
}; 
+1

Nein. Tun Sie das nicht. Aus diesem Grund wurden die Deferreds veraltet. – Bergi

Verwandte Themen