2017-06-24 6 views
1

私はMDNで与えられた例を約束の実装でテストしようとしました。それは私に以下のようなエラーを与えます。なぜこの関数で作業していないのですか

エラー

function successCallback(result) { 
    console.log("Success" + result); 
} 

function failCallback(fail) { 
    console.log('fail' + fail); 
} 

function doSomething(successCallback, failCallback) { 
    return "Yello"; 
}; 

doSomething(successCallback, failCallback); 


doSomething().then(successCallback,failCallback); 
+0

あなたのコード内で見られることはあり約束していません。 – robertklep

+0

doSomethingという関数を定義しましたが、約束どおりではありません –

+0

このURLには何が書かれていますか? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises – user3310115

答えて

1

を実行されることはありません:エラー処理を有効にするには

async function doSomething() { 
    return "Yello"; 
}; 

doSomething().then(console.log);//Yello 

、単にスローエラー:

async function isMultiple(a,b) { 
    if(a%b===0){ 
     return true;//success 
    } 
     throw "not a multiple"; 
}; 

isMultiple(5,2).then(console.log).catch(console.log);//not a multiple in catch 
非同期関数は(非常に非常に新しい)ES7の一部であることを

注...

babeled code

0

doSomethingオブジェクトがthen機能を持っていない

Uncaught TypeError: doSomething(...).then is not a function 
    at promise.js:16 

JSファイルは、doSomething

+0

それでは、いつ私たちはいつ私たちを「それから」できますか? – user3310115

+0

'$ http'のような 'promise'オブジェクトがある場合は –

+0

といいます。do somethingのような通常の関数で約束したい場合はどうすればいいですか? – user3310115

1

あなたdoSomething機能がPromiseを返すために持っているだけの機能です。例については :

return Promise.resolve('Hello');

1

あなたはthenに成功またはエラーの場合はrejectsの場合resolves約束を返却する必要があります。あなたの例では

function successCallback(result) { 
 
    console.log("Success" + result); 
 
} 
 

 
function failCallback(fail) { 
 
    console.log('fail' + fail); 
 
} 
 

 

 
function doSomething(successCallback, failCallback) { 
 
    return new Promise((resolve, reject) => { 
 
     resolve('Yello!'); 
 
     // or 
 
     // reject ("Error!"); 
 
    }); 
 
} 
 

 
doSomething().then(successCallback, failCallback);

2

、あなたはPromiseを使用していません。 1を使用するには、あなたが行う必要があります。

ここ
function successCallback(result) { 
    console.log("Success" + result); 
} 

function failCallback(fail) { 
    console.log('fail' + fail); 
} 

function doSomething() { 
    return new Promise(function(resolve,reject) { 
     console.log("Yello"); 
     resolve(); 
    }); 
} 


doSomething().then(successCallback,failCallback); 

を、failCallbackはさらに簡単非同期

関連する問題