当同时发出多个请求时Promise.allSettled,响应中的数组顺序是否与请求中的初始数组相对应?无论它们的结算顺序如何,它是否都保持相同的顺序?
const promise1 = new Promise((resolve, reject) => setTimeout(resolve, 2000, 1)); //finish last
const promise2 = Promise.resolve(2); //finish first
const promise3 = new Promise((resolve, reject) => setTimeout(resolve, 100, 3)); //finish in the middle
const promises = [promise1, promise2, promise3];
Promise.allSettled(promises).
then((results) => results.forEach((result) => console.log(result)));
Run Code Online (Sandbox Code Playgroud)
在测试中这似乎是正确的,但文档中似乎无法保证该顺序将保留。MDN 文档在这里
我从一个我不熟悉的内部实用程序库中导入了一个函数。这个库没有文档,我只是假设它是异步的,因为它的名字getUserDetails。我以为它在做一个http请求。
我在这样的异步函数中使用它
async function getAllUserInfo(event) {
const details = await getUserDetails(event);
// other stuff
}
Run Code Online (Sandbox Code Playgroud)
我的假设是错误的。一位同事指出这不是异步的。我最终改变了它,但是当我错误地使用它时它仍然有效。我能够等待同步函数并返回正确的数据。
我的问题是关于它是如何工作的。是否在同步函数上添加 await 使其在下一个滴答声中解析,还是像同步函数那样立即返回?
使用 nextjs 12(页面路由器),从“next/router”返回的路由器具有您可以侦听和适当处理的导航事件。这是文档。
一个具体事件是routeChangeStart。当您希望在用户离开页面之前提示他们时,您已侦听该事件,然后打开一个模式并抛出错误以阻止导航。
对于 nextjs 13(应用程序路由器),从“next/navigation”返回的路由器不具有订阅事件的相同能力。
文档中有一个解决方案可以告诉您路线何时已更改。它使用两个新的钩子
usePathnameuseSearchParams这是该解决方案。
我想在路线即将改变之前知道。
您如何知道 nextjs 13 应用程序(使用应用程序路由器)何时将要导航,以及如何阻止它这样做?
我正在尝试使用模板文字构建具有多个查询参数的 URL。
为了便于阅读,我将每个查询参数放在单独的行上。它看起来像下面的例子,只是更长。
const url = `http://example.com/hey?
one=${one}&
two=${two}&
three=${three}`;
Run Code Online (Sandbox Code Playgroud)
我的问题涉及制作一个多行文字字符串,该字符串具有最终值,每个参数之间没有换行符 (\n) 字符。模板文字是否可以做到这一点,还是应该以旧方式连接字符串?
背景
嗨,我是 cypress 的新手,我有以下代码允许指定的用户类型(总共 4 个)登录。
由于这是主要测试之一,因此不必将相同的代码复制并粘贴到我的每个新测试中,我想让它们可重复使用,以便在未来的测试中,可以再次使用或“调用”它们.
将这些测试保存在单独的文件夹和单独的文件中会更容易,这样它们就可以自己维护,但可以在我创建的任何未来测试文件中在必要时调用它们。
例如,如果我有一个与教师相关的未来测试,我可以调用执行教师登录的函数,然后开始编写实际处理测试的脚本的其余部分,而无需每次都搞砸复制和粘贴.
执行登录部分的代码块如下(对于所有其他类型的用户几乎相同)
我一直在尝试研究如何创建方法和函数,但对我应该使用的结构不太确定,并且查看了文档但我有点困惑。
describe('Create Homework', function() {
it('Create New Assignment', function() {
cy.visit('http://www.demoapp.com')
cy.contains('Log in')
// Check that the user has indeed landed on the login page
cy.url().should('include','/login')
// Make a school selection
cy.get('#school-selector-search-box')
.type('Bristol Free School')
// Click the suggestion
.get('.suggestions > .ember-view.suggestion:nth-of-type(1) > .suggested-school-name').click()
// Enter a username at this step
cy.get('#identification')
.type('gdawson_4319c')
.should ('have.value','gdawson_4319c')
// Enter a password at this step
cy.get('#password')
.type('demo')
.should ('have.value','demo')
// Proceed …Run Code Online (Sandbox Code Playgroud) javascript ×4
async-await ×1
cypress ×1
es6-promise ×1
events ×1
multiline ×1
navigation ×1
next.js13 ×1
router ×1
unit-testing ×1