WHO*_*LES 6 javascript node.js promise ecmascript-6
我只是似乎无法用诺言来围绕链接查询。最让我感到困惑的是.then(function(doSomething)部分。
我应该在函数中添加什么(doSomething)?它是做什么的?
有人可以在不使用Promise.all而是使用.then()的情况下为我链接这些查询吗?所以我可以从中学到
SELECT * FROM books where book_id = $1
SELECT * FROM username where username = $2
SELECT * FROM saved where saved_id = $3
Run Code Online (Sandbox Code Playgroud)
在function(doSomething)当先前的承诺成功完成,并运行doSomething是响应。您可以使用以下方式链接承诺then:
query("SELECT * FROM books where book_id = $1")
.then(() => query("SELECT * FROM username where username = $2"))
.then(() => query("SELECT * FROM saved where saved_id = $3"));
Run Code Online (Sandbox Code Playgroud)
这将依次执行三个SQL查询。
但是,由于您很可能希望保存响应,因此可以使用async/await以下方法:
async function threeQueries() {
//Fetch all three queries in sequence
let queryOne = await query("SELECT * FROM books where book_id = $1");
let queryTwo = await query("SELECT * FROM username where username = $2");
let queryThree = await query("SELECT * FROM saved where saved_id = $3");
//Extract the response text from our queries
let resultOne = await queryOne.text();
let resultTwo = await queryTwo.text();
let resultThree = await queryThree.text();
//Return the responses from the function
return [resultOne, resultTwo, resultThree];
}
Run Code Online (Sandbox Code Playgroud)
您也可以Promise.all这样使用:
Promise.all([
query("SELECT * FROM books where book_id = $1"),
query("SELECT * FROM username where username = $2"),
query("SELECT * FROM saved where saved_id = $3")
]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |