2017-10-03 6 views
0

私は約束通りのデータをthenで渡しており、データは切り捨てられています。約束を越えるデータのバイト数に制限はありますか?プロミスのデータを切り捨てます

return this.conexao 
      .requestSend(url, locacoesJson) 
      .then(data=>{ 
       //data is not complete here 
      }); 

何か間違っていますか?

requestSend(url, json){ 

    return new Promise((resolve, reject)=>{ 
     try{ 
      const request = net.request(url); 

      request.setHeader('Content-Type', 'application/json'); 
      request.on('response', (response) => { 
       response.on('data', (chunk) => { 
        const data = `${chunk}`;    

        if(response.statusCode == 200) 
         resolve(data); 
        else 
         reject(data); 
       }); 

       response.on('error', (error) => { 
        reject(`${JSON.stringify(error)}`); 
       }) 
      }); 
      request.write(json, (teste) => {}) 
      request.end(); 
     }catch(e){ 
      reject(e); 
     } 
    }); 
} 
+1

「完了していません」とはどういう意味ですか? – glennsl

+0

'' 'const data =' $ {chunk} ';' ''を実行する目的は何ですか? – glennsl

+0

データは大きなjsonであり、この時点で分割されています/電子チャンクを使用しています –

答えて

0

ここには約束はありません。問題は、チャンクを全く処理せず、最初のチャンクの内容で約束を解決していないことです。

あなたがそれらをすべて持っているまで、そして、次にが約束を解決するまで、チャンクを組み立てる必要があります。それは冗長だったので、私はtry-catchを削除した

requestSend(url, json){ 

    return new Promise((resolve, reject)=>{ 
     const request = net.request(url); 

     request.setHeader('Content-Type', 'application/json'); 
     request.on('response', (response) => { 
      let data = ''; 

      response.on('data', (chunk) => { 
       data += chunk; 
      }); 

      response.on('error', (error) => { 
       reject(`${JSON.stringify(error)}`); 
      }); 

      response.on('aborted',() => reject('Request aborted')); 

      response.on('end'() => { 
       if (response.statusCode === 200) { 
        resolve(data); 
       } else { 
        reject(data); 
       } 
      }); 
     }); 
     request.write(json, (teste) => {}) 
     request.end(); 
    }); 
} 

注:あなたが使用しているAPIに精通されるものではないが、私はそれがこのようなものになるだろうと思います。

+0

、ありがとう、それは働いています! –

+0

申し訳ありませんが、完璧に動作しています。私は最後に 'on( 'data'')を実行しました。最後に' on'( 'end'()=> {' –

関連する問題