2017-01-27 10 views
0
var rbx = require('roblox-js'); 

rbx.login('INF_BOT', '$$$') 
.then(function (info) { 
console.log('Logged in with ID ' + info.userId); 
rbx.getPlayers(539310, 1) 
.then(function (players) { 
    for(var Plr in players) { 
    console.log(Plr) 
    } 
}) 
.catch(function (err){ 
    console.error(err.stack); 
}) 
}) 
    .catch(function (err) { 
    console.error(err.stack); 
}); 

の内容を取得しようとしたとき.thenは関数ではありません、私は出力を得続ける:ここhttp://prntscr.com/e0upflJS:約束

はgetPlayers.jsです:http://pastebin.com/wD6bjStc

私は見当もつかない理由を持っていません。次に、エラーを投げている、基本的にgetPlayersはオブジェクトを返すとオブジェクト内に約束とステータスがあり、プロミスにはオブジェクトがある...それはAPIが私に示しているものだ。

私は基本的にgetPlayers()という関数を実行していますが、オブジェクトを返します。そのオブジェクトにはPromiseと関数があります。私は約束を得る必要があります。...

+1

ここで、 'getPlayers'は定義されていますか?それは約束を返しますか? – hackerrdave

+0

解決策はあなたが書いたカスタム関数であればかなりシンプルです。 Promise.resolve(<戻り値>)に戻り値をラップして返すだけです。 例:return Promise..resolve( 'thisIsTheValueToReturn')とその関数は有効になります。 –

+0

また、約束を破らないようにするには、必ず.then()の約束を返さなければなりません。 –

答えて

2

私はあなたを助け、あなたのためにroblox-js libをナビゲートすることに決めたので退屈です。

コードhereは、getPlayers関数から返されるものです。関数が単に約束を返さないので、getPlayers().thenではなく、getPlayers().promise.thenを探す必要があるようです。これは、promiseという名前のプロパティ(私が推測するもの)とgetStatusという関数を持つオブジェクトを返します。

var rbx = require('roblox-js'); 

rbx.login('INF_BOT', '$$$') 
    .then(function (info) { 
    console.log('Logged in with ID ' + info.userId); 
    rbx.getPlayers(539310, 1).promise // <------------------------------- 
     .then(function (players) { 
     for (var Plr in players) { 
      console.log(Plr); 
     } 
     }) 
     .catch(function (err) { 
     console.error(err.stack); 
     }) 
    }) 
    .catch(function (err) { 
    console.error(err.stack); 
    }); 
+0

+1、これはOPが言ったものと非常によく一致します: "しかし、それはオブジェクトを返す、そのオブジェクトには約束です" – Paulpro

+1

@Chevありがとう、これは働いた! –

+0

@ICostaExDesigns yay!それはうまくいきました:) – Chev