簡體   English   中英

我如何在node.js中的每個三元選項中執行兩項操作?

[英]How do I do two operations per one ternary option in node.js?

有條件,這也是三元選擇

?spotify.search({type:'track',query:`${d}`},(e2,d2)=>!!e2

因此,如果有錯誤或沒有錯誤,它將轉到

 ?console.log(e2)
 :console.log(`Artist ${d2.tracks.items[0].artists[0].name}, album ${d2.tracks.items[0].album.name}, song ${d2.tracks.items[0].name}, preview url ${d2.tracks.items[0].preview_url}`))

但是,對於第二個選項,我想做的比console.log還要多。我還想附加一個日志文本文件,而不會丟失回調函數中的數據。 有什么辦法可以同時執行console.log和下面的三進制選項的代碼行嗎?

require(`fs`).appendFile(`log.txt`,`Artist ${d2.tracks.items[0].artists[0].name}, album ${d2.tracks.items[0].album.name}, song ${d2.tracks.items[0].name}, preview url ${d2.tracks.items[0].preview_url}`,`utf8`,e=>e?console.log(e):true)

在這里,它識別為未定義

(e2,d2)=>!!e2
        ?console.log(e2)
        :(console.log(`Artist ${d2.tracks.items[0].artists[0].name}, album ${d2.tracks.items[0].album.name}, song ${d2.tracks.items[0].name}, preview url ${d2.tracks.items[0].preview_url}`)),
         require(`fs`).appendFile(`log.txt`,`Artist ${d2.tracks.items[0].artists[0].name}, album ${d2.tracks.items[0].album.name}, song ${d2.tracks.items[0].name}, preview url ${d2.tracks.items[0].preview_url}`,`utf8`,e3=>e3?console.log(e3):true))

您可以使用逗號運算符,該運算符計算逗號分隔的表達式列表並返回最后一個表達式的值:

? console.log(e2)
: (
   console.log(`Artist ${d2.tracks.items[0].artists[0].name}, album ${d2.tracks.items[0].album.name}, song ${d2.tracks.items[0].name}, preview url ${d2.tracks.items[0].preview_url}`)),
   require(`fs`).appendFile(`log.txt`,`Artist ${d2.tracks.items[0].artists[0].name}, album ${d2.tracks.items[0].album.name}, song ${d2.tracks.items[0].name}, preview url ${d2.tracks.items[0].preview_url}`,`utf8`,e=>e?console.log(e):true)
);

但是我不建議這樣做,因為它不太可讀。 條件運算符可能僅應在需要使用結果表達式時才使用-否則,請使用if / else

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM